我正在嘗試以程式設計方式開啟一個新終端並自動執行一個自訂腳本,該腳本設定各種環境變數以啟動互動式會話。這一切都運作正常,除了無法編輯產生的終端,即沒有遊標。我目前的嘗試如下所示:
konsole -hold -e /path/to/bash/script/run_oenv.sh
看起來run_oenv.sh
像這樣(用於簡單測試):
echo hello world
export FOO=bar
當執行上述命令run_oenv.sh
成功執行時,我看到新終端中回顯了預期的調試語句,但我只是不知道如何使新終端具有互動性。我缺什麼?
最終,bash 腳本要做的不僅僅是設定環境變量,但這是最簡單的測試案例。
這是在 Centos 7/KDE 上。
答案1
使用時-e
來執行命令時,它會執行該命令反而它會啟動的外殼。這意味著它會運行您的腳本,然後不會執行其他任何操作。
如果您想啟動一個互動式bash
shell 來取得您的文件,請使用bash
其--rcfile
命令列選項:
konsole -hold -e bash --rcfile /path/to/bash/script/run_oenv.sh
請注意,這使得bash
不是讀取~/.bashrc
文件。如果您仍然想要 source ~/.bashrc
,就像互動式 shell 會話中常見的那樣,您可以從run_oenv.sh
程式碼中執行此操作:
[ -f "$HOME/.bashrc" ] && source "$HOME/.bashrc"
或沒有短路語法,
if [ -f "$HOME/.bashrc" ]; then
source "$HOME/.bashrc"
fi
(可能位於檔案頂部,run_oenv.sh
讓您的檔案覆蓋 中的任何變數或設定~/.bashrc
)