$PATH 未在 Raspbian 上的 LXDE 內修改
我在 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
,並確保它來自~/.profile
or~/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 啟動的程序中定義。