将cygwin bin目录添加到powershell路径环境变量... powershell中的cygwin

时间:2012-02-16 00:07:27

标签: powershell cygwin

Powershell非常适合编写脚本。但是当谈到日常使用时,某些东西可能是一个巨大的PITA !!

所以我认为如果我可以在我的个人资料中做这样的事情会很棒.p1:

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

访问tar,zip等实用程序...但这不起作用。当我这样做时,变量看起来正确:

PS > $env:path

但是当我尝试做的时候,比方说,

PS > unzip foo.zip

我收到命令未找到类型错误。

WTF PowerShell!?

  

编辑:很棒的答案!今天早上我用新鲜的眼睛看着它,意识到我只需要正确拼写'cygwin'!现在我不必在两个控制台之间来回切换。应该注意的是,任何使用这个技巧的人都会按顺序评估你在powershell中的路径 - 如果你把c:\ cygwin \ bin放在$ env:path变量的末尾,它将被最后搜索,所以它赢了' t干扰现有的powershell别名/ cmdlet。

3 个答案:

答案 0 :(得分:0)

它对我有用:

设置个人资料:

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

或者只是当前的shell:

$env:path = $env:path + ";C:\Program Files\Notepad++"

答案 1 :(得分:0)

只要您尝试在同一个Powershell会话中使用它,就可以使用$env:path将cygwin bin添加到PATH。如果您打开一个新控制台或关闭并打开Powershell,它将不会保留。否则,你在做什么应该工作。确保您确实添加了正确的路径。如果您要保留更改,请将该行添加到$profile

另外,尝试使用Mingw / Msys / Msysgit工具。我发现Mingw比cygwin更轻量级(如果你使用cygwin只是为了得到一些这样的工具。)

答案 2 :(得分:-2)

默认情况下,PowerShell只会修改其PATH的本地副本。运行外部命令时,它们不会看到本地环境变量。

根据此TechNet article,您可以回退到.NET静态方法SetEnvironmentVariable,以便在用户级别执行此操作,如果您希望这是永久性更改:

[Environment]::SetEnvironmentVariable("TestVariable", "Test value.", "User")