如何運行 bash 命令並保持提示字元開啟?

如何運行 bash 命令並保持提示字元開啟?

我正在編寫一個 bash 函數,它將運行一些命令來設定環境,然後讓使用者處於提示符下。

我可以跑

bash -c 'ls'

ls在 bash 中執行。

我也可以做

bash -c 'ls ; exec bash'

執行ls,然後讓 bash 提示字元保持開啟。

但是,我想取得一個檔案並設定一些別名、函數和環境變量,然後讓提示保持開啟狀態,如下所示:

 bash -c 'source env.sh ; exec bash'

當然,這是行不通的,因為子 shell 不會繼承別名或函數。有辦法解決這個問題嗎?我希望仍然能夠獲取用戶的.bashrc來源,而不是使用該--init-file選項。

答案1

設定一個 init 文件,該文件將在開始時獲取使用者的 init 文件,然後執行您想要的任何其他操作:

$ cat env.sh
. ~/.bashrc
export SOMEVAR="value"
somespecialfunction() {
  printf '%s\n' "I'm so cool"
}
$ bash --init-file env.sh

相關內容