linux執行遠端命令找不到環境變數

2021-09-23 18:42:00 字數 1350 閱讀 4111

我配置的gopath在/home/go下面,本質的問題還是找不到自定義的環境變數;但是直接用ssh登入到遠端伺服器上面以後,再執行相應的指令碼時成功的。

查閱資料發現,這兩種方式使用的bash模式不同(bash:shell的一種,也是現在大部分的linux的發行版本,shell就簡單理解成命令列直譯器吧)

首先,先解釋一下linux下面的四種bash模式:

login shell:

when you log onto the system use password

表示當你登入使用使用者名稱密碼到伺服器上的時候,會得到乙個login shell

在終端使用--login會得到乙個互動式的login shell

在指令碼中使用--login會得到乙個非互動式的login shell(非互動式:執行完指令碼就退出)

使用su -切換使用者會得到此使用者login shell

non-login shell

除了上面的情況,得到的都是non-login shell。不需要使用密碼重複登入獲取shell得到的都是non-login shell。比如:

window登入到linux,然後再使用圖形化介面登入就不需要密碼,是non-login shell

在當前的bash下面再執行乙個bash指令,也是乙個non-login shell。

簡單來說,不需要使用者名稱密碼的都是non-login shell

interactive

互動式

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...