zsh:我在bash上运行良好的shell脚本在zsh上不起作用
tm_removeAllLocalSnapshots是由macOS上的Swift编译器生成的执行文件。 (我成功了) 别名在Bash上运行得很好,但在zsh上却“挂起”,如下所示:zsh:我在bash上运行良好的shell脚本在zsh上不起作用,bash,pipe,zsh,incompatibility,Bash,Pipe,Zsh,Incompatibility,tm_removeAllLocalSnapshots是由macOS上的Swift编译器生成的执行文件。 (我成功了) 别名在Bash上运行得很好,但在zsh上却“挂起”,如下所示: alias tmutil-rmla='unsetopt multios; echo "tmutil listlocalsnapshots /|sudo tm_removeAllLocalSnapshots" 1>&2; tmutil listlocalsnapshots /|sudo tm_remove
alias tmutil-rmla='unsetopt multios; echo "tmutil listlocalsnapshots /|sudo tm_removeAllLocalSnapshots" 1>&2; tmutil listlocalsnapshots /|sudo tm_removeAllLocalSnapshots'
你能告诉我这一点吗?这是我的发现的命令,可以解决这个问题: $setopt nohup 然后我为bash写的剧本就成了魅力 这是一个简单的解决方案,但我不得不一页一页地浏览zsh手册,耗时2天。我是zsh的新手,在2天的时间内完全理解它并不容易
默认bash脚本在没有命令的情况下挂起:zsh具有不同的设置。因此,当我们切换到另一个shell时,我们需要小心假定了什么类型的设置。我只有在命令末尾(
tmutil rmla&
)或别名定义末尾添加&
)时才会得到这种设置。什么是unsetopt
?@Barmar这是zsh
的事情。顺便说一句,这个别名在bash中不起作用,因为unsetopt
(和multios
)是zsh
的东西。而且它似乎与别名的其余部分没有任何关系。通常,如果别名有问题,请尝试将其作为函数重写。@SungwookKim:it bash,它将生成一条错误消息:bash:unsetopt:command not found,因此这不是我所说的“正在处理bash”。在zsh上,您关闭了multios(为什么?),而在bash中,您没有。这可能是造成结果不同的原因。
% tmutil-rmla
tmutil listlocalsnapshots /|sudo tm_removeAllLocalSnapshots
zsh: done tmutil listlocalsnapshots / |
zsh: suspended (tty output) sudo tm_removeAllLocalSnapshots