1
我想在Bash腳本中執行Zsh函數命令。下面是一個例子:如何在Bash腳本中執行Zsh shell命令
〜/ .zshrc
hello() {
echo "Hello!"
}
hello.sh
#!/bin/bash
hello
在上面的zsh bash腳本執行
(zsh) $ ./hello.sh
hello command not found
我也試圖與here文檔:
#!/bin/bash
/bin/zsh - <<'EOF'
hello
EOF
用heredocs執行上面的腳本也說命令未找到錯誤。
有什麼建議嗎?
謝謝!
防守運行命令在你的bash腳本中的函數。調用腳本中'.zshrc'中定義的函數有什麼意義?你永遠不應該這樣做(即使在Zsh腳本中,除非你有合理的理由)。而且,如果你足夠深入,bash和zsh並不完全兼容。 – 4ae1e1
一個有效的例子是virtualenwrapper的workon命令。即使你在bash中定義了相同的函數或源代碼,當前的zsh shell也不會被給定的虛擬環境所反映。 – abhiomkar
如果你需要當前的shell環境,你可以使用一個函數(而不是腳本;當然這個函數可以保存在一個文件中並且來源)或者傳遞環境變量(或者作爲命令行參數)。在非交互式腳本中採購交互式init文件在任何情況下都是不好的做法,更不用說shell不兼容問題了。 – 4ae1e1