добавление каталога bin Cygwin в переменную среды powershell path ... cygwin в powershell - PullRequest
0 голосов
/ 16 февраля 2012

Powershell отлично подходит для написания сценариев.Но когда дело доходит до повседневного использования, некоторые вещи могут быть огромными PITA !!

, поэтому я подумал, что было бы здорово, если бы я мог сделать что-то подобное в моем профиле.ps1:

$env:path = "$($env:path);c:\cygwin\bin"

, чтобы получить доступ к таким утилитам, как tar, zip и т. Д., Но это не работает.Переменная выглядит правильно, когда я делаю:

PS > $env:path

, но когда я пытаюсь это сделать, скажем,

PS > unzip foo.zip

, я получаю команду not found type error.

WTF PowerShell!?

edit: отличные ответы!Этим утром я посмотрел на него свежими глазами и понял, что мне просто нужно правильно написать «cygwin»!теперь мне не нужно переключаться между двумя консолями.Для любого, кто использует этот совет, следует отметить, что ваш путь в powershell оценивается по порядку - если вы поместите c: \ cygwin \ bin в конец переменной $ env: path, он будет найден последним, поэтому он победит 't мешает существующим псевдонимам / командлетам powershell.

Ответы [ 3 ]

0 голосов
/ 16 февраля 2012

У меня сработало:

Чтобы установить свой профиль:

$command = '$env:path = $env:path + ";C:\Program Files\Notepad++"'
$command | Out-File -FilePath $PROFILE -Append -Encoding UTF8

Или просто текущая оболочка:

$env:path = $env:path + ";C:\Program Files\Notepad++"
0 голосов
/ 16 февраля 2012

Использование $env:path для добавления корзины cygwin в PATH должно работать до тех пор, пока вы пытаетесь использовать ее в том же сеансе Powershell. Если вы откроете новую консоль или закроете и откроете Powershell, она не будет сохранена. В противном случае то, что вы делаете, должно работать. Убедитесь, что вы действительно добавляете правильный путь. Если вы хотите сохранить изменения, добавьте строку в ваш $profile.

Также попробуйте использовать утилиты Mingw / Msys / Msysgit. Я считаю, что Mingw более легок, чем Cygwin (если вы используете Cygwin только для того, чтобы получить некоторые из этих утилит).

0 голосов
/ 16 февраля 2012

PowerShell по умолчанию только собирается изменить свою локальную копию PATH. Когда вы запускаете внешнюю команду, они не будут видеть локальные переменные среды.

Согласно этой статье TechNet , вы можете использовать статический метод .NET SetEnvironmentVariable, чтобы сделать это на уровне пользователя, если вы хотите, чтобы это было постоянное изменение:

[Environment]::SetEnvironmentVariable("TestVariable", "Test value.", "User")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...