zsh PATH

时间:2015-04-23 10:11:27

标签: zsh osx-yosemite zshrc

我今天只是鼓励zsh出现一个奇怪的问题。

我的环境是Mac OS X Yosemite,zsh 5.0.5(x86_64-apple-darwin14.0)

在.zshrc中,我手动将PATH变量设置为

export PATH="$PATH:~/.composer/vendor/bin"

在终端中尝试echo $PATH,结果符合预期(包含~/.composer/vendor/bin)。然后尝试从~/.composer/vendor/bin执行二进制文件,它总是返回我" zsh:command not found"错误。

尝试切换到bash,echo $PATH也符合预期,与zsh shell具有相同的结果。 尝试从~/.composer/vendor/bin执行二进制文件,没有问题。似乎PATH var在bash shell上运行良好。

我的zsh shell出了什么问题?

由于

2 个答案:

答案 0 :(得分:4)

尝试使用$serverRoot = "xxx.xxx.xxx." $startVal = 100 $stopVal = 150 for ($i=$startVal; $i -le $stopVal; $i++) { $User="username" $Password="password" $SecurePass=ConvertTo-SecureString -string $Password -AsPlainText -Force $Credential = New-Object System.Management.Automation.PSCredential $User, $SecurePass $session = New-SSHSession -ComputerName ($serverRoot + $i) -Credential $Credential -AcceptKey Invoke-SSHCommand -SSHSession $session -Command "echo $Password | sudo -S shutdown -r now" Remove-SSHSession -SSHSession $session -Verbose } 代替$HOME。在许多情况下,shell在您预期时不会展开~,并且通常最好使用~$HOME实际上只是用于交互式使用的捷径。 (我唯一可以回想起~首选的地方是.gitalias,其中〜被扩展,变量不是。)

答案 1 :(得分:1)

键入rehash以获取$PATH更改。

来自zsh user guide

  

存储命令的方式还有其他后果。特别是zsh   如果它已经知道在哪里找到一个新命令,它将不会寻找新的命令。如果   我在上面的例子中为ls添加了一个新的/usr/local/bin命令,zsh   将继续使用/bin/ls(假设已经找到)。至   解决这个问题,有一个命令rehash,它实际上清空了   命令哈希表,以便从中重新开始查找命令   刮。 csh的用户可能记得必须输入rehash非常多   使用新命令:它在zsh中并没有那么糟糕,因为如果没有命令   已经哈希,或现有的一个消失了,zsh会   再次自动扫描路径;此外,zsh执行重组   如果$path被改变,则自行协调。所以添加一个新的副本   指向$path头部的命令是主要原因   需要重新开始。

编辑然而@WilliamPursell可能会发表评论:

  

请注意"作曲家" !=" .composer"