我配置的gopath在/home/go下面,本質的問題還是找不到自定義的環境變數;但是直接用ssh登入到遠端伺服器上面以後,再執行相應的指令碼時成功的。
查閱資料發現,這兩種方式使用的bash模式不同(bash:shell的一種,也是現在大部分的linux的發行版本,shell就簡單理解成命令列直譯器吧)
首先,先解釋一下linux下面的四種bash模式:
login shell:
when you log onto the system use passwordnon-login shell表示當你登入使用使用者名稱密碼到伺服器上的時候,會得到乙個login shell
在終端使用--login會得到乙個互動式的login shell
在指令碼中使用--login會得到乙個非互動式的login shell(非互動式:執行完指令碼就退出)
使用su -切換使用者會得到此使用者login shell
除了上面的情況,得到的都是non-login shell。不需要使用密碼重複登入獲取shell得到的都是non-login shell。比如:interactivewindow登入到linux,然後再使用圖形化介面登入就不需要密碼,是non-login shell
在當前的bash下面再執行乙個bash指令,也是乙個non-login shell。
簡單來說,不需要使用者名稱密碼的都是non-login shell
互動式4.non-interactive
非互動式其中1和2是或者的關係,3和4也是或者的關係
一:使用ssh登入到伺服器再執行指令碼或者命令
使用的bash模式: interactive + login shell
載入的配置檔案方式(按照先後順序,找到退出)
/etc/profile
~/.bash_profile ~/.bash_login ~/.profile
二:使用ssh執行遠端命令和指令碼
使用的bash模式:non-interactive+non-login shell
載入的配置檔案方式(按照先後順序,找到退出)
~/.bashrc
解決問題:
可以在~/.bashrc裡面配置自己所需要的環境變數
參考資料:
shell 模式參考資料:
linux中執行找不到 so檔案
如果使用自己手動生成的動態鏈結庫.so檔案,但是這個.so檔案,沒有加入庫檔案搜尋路勁中,程式執行時可能會出現找不到動態鏈結庫的情形。其中的libjson linux gcc 4.6 libmt.so cannot found。解決這個問題 1 在系統中查詢這個檔案 當然要保證系統中已經有這個.so...
解決SSH遠端執行命令找不到環境變數的問題
通過ssh執行遠端主機的命令或指令碼時,經常會出現找不到自定義環境變數的問題。但是,如果通過ssh登入遠端主機,然後再執行相同的命令或指令碼,那麼此時執行又是成功的。兩種相似的方法,得到的結果卻截然不同,看起來很詭異的現象,根本原因在於這兩種方式使用的bash模式不同!這種方式會使用bash的int...
解決SSH遠端執行命令找不到環境變數的問題
通過ssh執行遠端主機的命令或指令碼時,經常會出現找不到自定義環境變數的問題。但是,如果通過ssh登入遠端主機,然後再執行相同的命令或指令碼,那麼此時執行又是成功的。兩種相似的方法,得到的結果卻截然不同,看起來很詭異的現象,根本原因在於這兩種方式使用的bash模式不同!這種方式會使用bash的int...