这是我的sample1.sh
#!/bin/bash
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
echo "foo"输出:

这里是我的sample2.sh
#!/bin/bash
rm -rf ~/.oh-my-zsh
rm ~/.zshrc
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
echo "foo"输出:

正如您所看到的,上述代码段之间的唯一区别是在行下面:
rm -rf ~/.oh-my-zsh
rm ~/.zshrc问题:当OMZ已经安装时,为什么能够看到foo,只看到?在https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh内部有什么特别的东西,当它检测到OMZ不存在并且可以安装之后,成功安装之后,它就不会继续到达我的foo
显然,echo "foo"只是一个突出一般问题的例子。
在脚本的最后构建中,我想要实现的只是在OMZ安装后通过调用来启用一些插件:
sed -i '' -e 's/^plugins=.*/plugins=(git, sublime)/' ~/.zshrc
只有当我手动触发它时,这一行才能正常工作。问题是,一旦安装了OMZ,它就不会调用sed。谢谢你指出,我不明白的问题在哪里?
发布于 2016-05-21 09:45:07
OMZ的安装脚本的一部分是使用行env zsh将当前的shell切换到sh。我相信这基本上是导致您的脚本分叉ZSH,并没有真正完成运行。如果您从ZSH中获得exit,那么它应该继续正常运行。
发布于 2016-10-07 14:36:23
哦-我的-zsh将分叉当前的进程。要想解决这个问题,就把它从剧本中删掉。
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sed "s/env zsh//g")"发布于 2022-01-14 22:15:08
作为解决办法,您可以使用&和wait并行运行安装命令,并等待其完成。
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" &
wait
echo "foo"https://stackoverflow.com/questions/37360258
复制相似问题