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。
答案 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")