Установка $ HOME в PowerShell

29

Как изменить домашний каталог по умолчанию на «C: \ Users \ khornsby» при каждом открытии powershell?

Я использую Windows 7. Ниже приведена информация о состоянии моей среды.

Windows PowerShell
Copyright (C) 2009 Корпорация Microsoft. Все права защищены.

PS P: \> cd ~
PS P: \>echo $HOME
П:\
PS P: \> HOME="C:\Users\khornsby"
Термин «HOME = C: \ Users \ khornsby» не распознается как имя командлета,
функция, файл сценария или работоспособная программа. Проверьте правильность написания имени или
если путь был включен, убедитесь, что он правильный, и повторите попытку.
В строке: 1 символ: 25
+ HOME = "C: \ Users \ khornsby" 

PS P: \> Set-Variable HOME "C:\Users\khornsby"
Set-Variable: не может перезаписать переменную HOME, потому что она доступна только для чтения или
постоянная.
В строке: 1 символ: 13
+ Set-Variable 

PS P: \> dir env:home*

Имя Значение
---- -----
HOMEPATH \
HOMEDRIVE P:
ДОМАШНЯЯ \\ fileserv \ khornsby $


PS P: \>
КЖ
источник
2
Как вы форматировали свой пост? Мне нравится, как то, что вы напечатали, подсвечивается.
Джей Базузи
3
Я использовал <kbd>тег.
kzh

Ответы:

27

По умолчанию переменная доступна только для чтения, но ее можно удалить с помощью -Forceпереключателя Remove-Variable. Чтобы сделать ваши изменения постоянными между сеансами, вы можете создать файл профиля, который очень похож на .bashrc(для bash в Linux), за исключением Powershell.

В вашей папке «Документы» (обычно C:\Users\YOUR_USERNAME_HERE\documents) для вашей учетной записи пользователя создайте папку WindowsPowerShell (с таким названием), если она еще не существует. Внутри папки создайте текстовый файл с именем profile.ps1 ( убедитесь, что это не profile.ps1.txt ).

Внутри файла поместите все, что хотите, чтобы оно выполнялось при открытии Powershell.

пример:

Write-Host "Hi John, welcome back!"
Remove-Variable -Force HOME
Set-Variable HOME "C:\Users\khornsby"

результат:

альтернативный текст

Джон Т
источник
1
Вы также можете запустить скрипт при запуске из ярлыка, указывая на: %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -NoExit -ExecutionPolicy bypass -File C:\foo\profile.ps1
paradroid
1
Я попробовал это, и он успешно изменил значение $ HOME. Но «кд ~» до сих пор упорно переходит в исходное местоположение.
Weeble
2
@ Смотри, мой ответ об отмене ярлыка ~.
ulty4life
9

Чтобы устранить озабоченность @Weeble по поводу ~ярлыка:

$HOMEDRIVE = "C:\"
$HOMEPATH = "Users\" + $env:username

# Set and force overwrite of the $HOME variable
Set-Variable HOME "$HOMEDRIVE$HOMEPATH" -Force

# Set the "~" shortcut value for the FileSystem provider
(get-psprovider 'FileSystem').Home = $HOMEDRIVE + $HOMEPATH

Смотрите здесь для различия между ~ и $ HOME

ulty4life
источник
1
стоит добавить cd $HOMEв конце, поэтому оболочка запустится в этом месте и будет готова к использованию :)
Eliran Malka
5

Еще проще ... открыть расширенные настройки системы ...

 C:\> systempropertiesadvanced

Добавьте новую системную переменную с именем HOME и укажите путь к вашему профилю.

введите описание изображения здесь

Перезапустите проводник или выйдите из системы и вернитесь ...

PS C:\> $Env:home 
--- 
Эдди Б
источник
3
Это не делает то, что спрашивает вопрос. Это устанавливает переменную окружения $ env: HOME, а не переменную Powershell $ HOME. Переменная Powershell $ HOME, по-видимому, является производной от переменных среды $ env: HOMEDRIVE и $ env: HOMEPATH во время запуска процесса Powershell. Именно $ HOME определяет поведение "cd ~".
Weeble
2
Извините, последнее утверждение не совсем верно. $ HOME и поведение «cd ~» оба соответствуют значениям переменных среды HOMEDRIVE и HOMEPATH при запуске процесса Powershell. Впоследствии изменение любой из этих переменных / переменных среды, по-видимому, не влияет на каталог, выбранный с помощью «cd ~».
Weeble
У меня отлично работает .... Я не знаю, что ты делаешь по-другому.
Эдди Б
3

Чтобы изменить из Windows, попробуйте следующее:

  • Прикрепите PowerShell к панели задач.

  • Щелкните правой кнопкой мыши значок PowerShell на панели задач.

  • Щелкните правой кнопкой мыши «Windows PowerShell» и выберите «Свойства».

  • В окне «Свойства» перейдите на вкладку «Ярлык» и измените поле «Начать с:» на нужный начальный каталог. (Пример:) .C:\Users\username\Desktop

  • Нажмите «ОК».

  • Запустите PowerShell из панели задач.

    Панель задач

    Окно свойств

clarencebuttowski
источник
не работает при выборе «Запуск от имени администратора»
devi
2

Вы можете использовать, help about_profilesчтобы увидеть более подробную информацию об этом. Не забудьте подписать свой сценарий.

Эдуардо Даудт Флах
источник
3
helpиз какого приложения?
kzh
@kzh: PowerShell
paradroid