我今天只是鼓励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出了什么问题?
由于
答案 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
如果它已经知道在哪里找到一个新命令,它将不会寻找新的命令。如果 我在上面的例子中为ls
添加了一个新的/usr/local/bin
命令,zsh 将继续使用/bin/ls
(假设已经找到)。至 解决这个问题,有一个命令rehash
,它实际上清空了 命令哈希表,以便从中重新开始查找命令 刮。csh
的用户可能记得必须输入rehash
非常多 使用新命令:它在zsh
中并没有那么糟糕,因为如果没有命令 已经哈希,或现有的一个消失了,zsh
会 再次自动扫描路径;此外,zsh
执行重组 如果$path
被改变,则自行协调。所以添加一个新的副本 指向$path
头部的命令是主要原因 需要重新开始。
编辑然而@WilliamPursell可能会发表评论:
请注意"作曲家" !=" .composer"