2015-06-24 107 views
1

在互聯網上搜索完成後,我知道在交互/非交互式 - 登錄/非登錄shell組合的情況下,應該在哪裏更改PATH變量的值。PATH變量的缺省值

從另一個帖子

https://shreevatsa.wordpress.com/2008/03/30/zshbash-startup-files-loading-order-bashrc-zshrc-etc/

我已經「/ bin/sh的」默認登錄shell和唯一的/ etc/profile文件被用於導出在我的系統所需的所有環境變量找到。而且在非交互式登錄shell的情況下,即使上面的鏈接表示它也不會引用/ etc/profile。但仍然當我執行,

ssh -4 -q -o StrictHostKeyChecking=no [email protected] "env" 
Password: 
SHELL=/bin/sh 
... 
**PATH=/usr/bin:/bin:/usr/sbin:/sbin** 
... 

我可以看到PATH變量的一些默認值。我想知道PATH的這些默認值是在哪裏設置的。

回答

1

您不應該在乎PATH的設置。您應始終在您的shell啓動文件(.profile.bashrc)中設置PATH

這樣你就不會依賴別人的很快無用的假設什麼目錄應該在你的PATH。唯一知道的是你。

開始了與

PATH=$(getconf PATH) 

,然後添加到您的喜好與

PATH=$PATH:$HOME/bin 
PATH=$PATH:/usr/local/bin 
PATH=$PATH:<...any other directory you need...> 

PS:在您的特定情況下,它看起來像PATH從遠端的SSH服務繼承了最終分叉你的外殼。如果shell沒有從其父項繼承PATH,它將設置一個默認值,您可以使用env -i /bin/sh -c 'echo $PATH'來查詢。

+0

感謝您的信息。但是,我很想知道這個默認PATH的設置。我相信,它不是來自遠程端的SSH守護進程。我從我的開發環境轉到了生產環境。開發環境具有非常巨大的PATH價值,大部分是生產環境中的NA。我也嘗試過你的第二種選擇。即使這比我粘貼的東西多:( –

0

這取決於你的分佈。在Debian及其衍生產品中,該定義位於/etc/environment中,並通過在適當的/etc/pam.d/文件中包含pam_env.so將其讀入當前會話。