Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
zsh:我在bash上运行良好的shell脚本在zsh上不起作用_Bash_Pipe_Zsh_Incompatibility - Fatal编程技术网

zsh:我在bash上运行良好的shell脚本在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

tm_removeAllLocalSnapshots是由macOS上的Swift编译器生成的执行文件。 (我成功了)

别名在Bash上运行得很好,但在zsh上却“挂起”,如下所示:

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