我是bash的新手,並試圖解決一些問題,我正在嘗試編寫代碼。保存全局變量BASH
我是在我的用戶名在終端和連接到來砸
USER$
USER$ bash
bash$
現在在bash我節省了一些變量FE:
i=2
k=2
let p=$k*$i
現在我想在室外使用這些變量bash函數
bash$exit
USER$
但是現在變量不存在
我嘗試使用導出,但它並沒有真正的工作,可以使用我們的幫助,tnx
我是bash的新手,並試圖解決一些問題,我正在嘗試編寫代碼。保存全局變量BASH
我是在我的用戶名在終端和連接到來砸
USER$
USER$ bash
bash$
現在在bash我節省了一些變量FE:
i=2
k=2
let p=$k*$i
現在我想在室外使用這些變量bash函數
bash$exit
USER$
但是現在變量不存在
我嘗試使用導出,但它並沒有真正的工作,可以使用我們的幫助,tnx
與DOS批處理文件不同,Unix shell腳本不能直接影響其調用shell的環境。
您可以考慮使用.
(dot)或source
命令在調用shell的上下文中讀取和執行腳本。這意味着腳本中所做的更改確實會影響環境(通常情況下,您仍然可能遇到子shell問題)。
另一種替代方法是設置變量將腳本以name=value
格式寫入調用腳本然後讀取的文件(使用.
或source
)。
不可能。你不能像這樣在父進程中設置環境變量。
傳統的解決方案是將設置添加到您的.profile
或. bashrc
- 您應該使用哪個取決於您的特定需求和本地Bash配置;我的第一個建議是.profile
,但是你必須避免任何bashisms,因爲這個文件與sh
共享(例如,沒有let
)。
對於更具體的需求,請將這些命令放在一個文件中,並在需要時輸入source
。您可能還想創建一個簡單的腳本來使用當前值更新文件。
# source this file to update $HOME/stuff
cat<<HERE>$HOME/stuff
i='$i'
k='$k'
p='$p'
export i k p
HERE
要在連接到遠程系統時保留變量,請查看您用於連接的工具的文檔。例如,ssh
具有用於在啓動遠程會話時從本地系統導入環境變量的配置選項。
好的,在我的操作過程中,我需要移動4個不同的服務器,每當我需要變量時,你會推薦什麼? – jarhead