Shell

對於同一個 unix 或 linux 使用者,不同的環境變數集

  • November 5, 2011

我正在使用tcsh,對於一個特定的項目,我團隊的每個成員都連接到具有相同使用者的伺服器。(這是我們無法改變的)。

出現這種情況是因為我想要一些自定義環境變數和別名,為此我有我自己的 .tcshrc 文件(即.tcshrc_cust),我在連接到該機器時作為第一個操作載入該文件:

source .tcshrc_cust

儘管這工作得很好,但我在使用時遇到了一個問題vim:如果我從 vim 內部進入 shell(使用:sh),我會掉入一個普通的 shell,而沒有我的自定義環境。瓦爾斯。和別名。

除了在該機器上使用不同的使用者之外,是否有解決方案?


解決方案(由@Shawn 提供):

我在我的密鑰前面.ssh/authorized_keys加上:

command="setenv subuser noz; tcsh"

並在文件末尾寫下.tcshrc這些行:

if ($?subuser) then
   source .tcshrc_$subuser;
endif

現在一切正常。

您可以.tcshrc檢查一個特殊的環境變數(如subuser),並有條件地檢查source .tcshrc_cust。登錄時,執行subuser=nozimica tcsh. 它將獲取該環境變數並執行您的自定義 rc 腳本。此外,vim 的:sh命令也可以工作。你甚至可以讓它變得花哨和source .tcshrc_$subuser; 這樣每個人都可以做到。

您可以subuser=nozimica tcsh通過讓 ssh 為您執行它來跳過登錄時執行的部分。如果您設置了 ssh 密鑰身份驗證,那麼在~/.ssh/authorized_keys伺服器上,您可以在密鑰前加上command="subuser=nozimica tcsh", ssh 將為您執行該命令。

引用自:https://unix.stackexchange.com/questions/22877