Bash
如何在 zshrc 中獲取源文件以在 bash 中執行?
我有一個包含一堆函式的 bash 腳本。我希望這個腳本使用 bash 執行。該腳本在頂部有這個:
echo "BASH_VERSION""$BASH_VERSION" echo "ZSH_VERSION""$ZSH_VERSION"
目前我可以看到腳本在 ZSH 中執行。
如何讓腳本使用 bash 執行?我
#!/usr/bin/env bash
在文件的頂部,但它仍然不起作用。我正在使用source
.
如果您使用 執行腳本
source
,那麼腳本文件中的命令將由目前shell 環境執行,無論#!
腳本的 -line 說什麼(該行只是一個註釋,在這種情況下將被忽略)。這就是這樣source
做的。如果您通過在命令行上提供腳本的路徑和名稱來執行腳本(例如,
./myscript
),那麼,假設文件是可執行的,它將由#!
腳本開頭的 - 行中提到的解釋器執行. 文件中的函式定義和變數等將在腳本執行期間處於活動狀態,但隨後會在腳本終止時與腳本環境的其餘部分一起被銷毀。如果腳本文件包含您想要在目前
zsh
shell 環境中訪問的函式的定義,並且如果文件中的函式以與 shell 兼容的方式編寫zsh
,那麼原始碼將是合適的做法。如果函式是為
bash
shell 顯式編寫的(使用bash
特定變數等),那麼您可能希望將應用程序的其餘部分編寫為單獨的bash
腳本,並從該腳本中獲取包含函式的文件。或者,您可能希望為zsh
shell 重寫函式,然後在 shell 中獲取重寫的函式定義zsh
。