2016-05-21 21 views
1

這裏是我的sample1.sh無法到達的命令,而安裝哦,我的巖組

#!/bin/bash 

sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" 
echo "foo" 

輸出:

enter image description here

這裏是我的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" 

輸出:

enter image description here

正如你看到的,上面的片斷之間的唯一區別是以下行:

rm -rf ~/.oh-my-zsh 
rm ~/.zshrc 

問:爲什麼我能看到只有當OMZ已經安裝? https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh裏面有什麼特別的地方,它檢測到OMZ不存在並且可以安裝,安裝成功後,它不會繼續到達我的foo

顯然,​​只是一個突出一般問題的例子。

在最後內置的腳本,我想要實現的是通過簡單地調用使一些插件一旦被安裝OMZ:

sed -i '' -e 's/^plugins=.*/plugins=(git, sublime)/' ~/.zshrc

此行只有當我手動觸發它工作正常。問題是,一旦安裝OMZ,它永遠不會調用sed。感謝您指出,我不明白的問題在哪裏。

回答

3

OMZ的安裝腳本的一部分是將當前shell切換爲sh,行env zsh。我相信這基本上導致你的腳本分叉ZSH,並且永遠不會完成運行。如果你從ZSH shell中獲得exit,那麼它應該照常繼續。

+0

謝謝你。事實上,'exit'允許腳本的其餘部分被觸發,但是這隻有在手動提供'exit'時才起作用,這不是我最初想要的。我的這個問題的解決方法是簡單地將OMZ安裝後的所有內容提取到單獨的文件中。投票努力。 – slick

0

Oh-my-zsh將分叉當前進程。要修復,只需將其從腳本中刪除即可。

sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sed "s/env zsh//g")"