Path

$PATH 未在 Raspbian 上的 LXDE 內修改

  • September 16, 2013

我在 home/pi 中有一個 bin 目錄。這是添加到我的 $ PATH when I login (by .profile), but when I go into LXDE and use LXTerminal my bin directory is no longer added to $ 小路。

來自man bash

當 bash 作為互動式登錄shell或作為帶有 –login 選項的非互動式 shell呼叫時,它首先從文件 /etc/profile 中讀取並執行命令(如果該文件存在)。讀取該文件後,它會按順序查找 ~/.bash_profile、~/.bash_login 和**~/.profile**,並從第一個存在且可讀的命令中讀取並執行命令。當 shell 啟動時,可以使用 –noprofile 選項來禁止這種行為。

登錄 shell退出時,如果文件存在,bash 將從文件 ~/.bash_logout 和 /etc/bash.bash_logout 中讀取並執行命令。

當一個 不是登錄shell的互動式 shell啟動時,bash 會從~/.bashrc**讀取並執行命令,如果該文件存在的話。

“互動式外殼”是在終端的前台啟動的外殼,但它們不一定是登錄外殼。

登錄 shell是參數零的第一個字元是 - 或以 –login 選項開頭的shell 。

GUI 終端不這樣做。

這就是為什麼通常,.profile原始碼.bashrc可以.bashrc包含您想要的所有shell 的內容,以及.profile僅用於登錄 shell 的任何其他內容。有時,這可以.profile通過檢查是否$PS1定義了(互動式提示)來限定,因此.bashrc僅包含互動式提示。這樣做的一個原因是避免在非互動式(例如,腳本執行)shell 中使用某些別名。

所以:你可以把你的 $PATH 定義放在 中~/.bashrc,並確保它來自~/.profileor ~/bash_profile

在大多數設置中,~/.profile在登錄時讀取,這是設置環境變數的常用位置。不幸的是,分發、顯示管理器(圖形登錄方法)和桌面環境的某些組合跳過了該文件。您沒有指定您正在使用哪個顯示管理器(lxdm?),但它顯然沒有安排~/.profile在 X 會話開始時讀取。

我相信 Raspbian 支持~/.pam_environment. 此文件由每個登錄方法讀取,其中包括PAM身份驗證或會話部分pam_env中的非古董。我相信 Raspbian 就是這種情況(檢查或包含提及的一行)。您可以在 中定義環境變數,但可能性比在中更有限:您只能編寫,不能使用其他變數或添加到變數的現有值。所以你不能像 in那樣寫,你必須把它拼出來:/etc/pam.d/common-session``/etc/pam.d/lxdm``pam_env.so``~/.pam_environment``~/.profile``VARIABLE=VALUE``PATH=$HOME/bin:$PATH``~/.profile

PATH=/home/pi/bin:/usr/local/bin:/usr/bin:/bin

我不建議在.bashrc. 每當您啟動子外殼時,這將覆蓋現有值,並且變數只會在通過終端中的外殼啟動的程序中定義,而不是在直接從 GUI 啟動的程序中定義。

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