我添加$HOME/bin
到$PATH
from ~/.profile
.但是,它似乎不是在登录期间获取的。我使用登录管理器 -lxdm
我认为,而不是startx
。我知道这对于执行哪些脚本很重要。
为了说明这一点,请参阅在我显式 source 后如何$HOME/bin
添加~/.profile
。但它不应该是在图形登录期间获取的吗?
sashoalm@aspire:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
sashoalm@aspire:~$ source ~/.profile
sashoalm@aspire:~$ echo $PATH
/home/sashoalm/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
sashoalm@aspire:~$
答案1
但它不应该是在图形登录期间获取的吗?
关于某些图形登录采取不寻常立场的问题存在一个小争论......
我将 $HOME/bin 从 ~/.profile 添加到 $PATH。但是,它似乎不是在登录期间获取的。我认为我使用登录管理器 - lxdm
正确的。大多数 DM~/.profile
在您登录时都会进行读取。但是,他们必须明确执行此操作,因为~/.profile
传统上的来源是登录外壳DM(GUI 登录)不是 shell!
这是我从lightdm
人们为了不是明确采购~/.profile
——因为 DM 不是外壳。
你可以~/.profile
从~/.xsession
——看这里。
答案2
大部分同意@goldilocks。只是想添加源脚本~/.profile
是~/.xsessionrc
,而不是~/.xsession
.
理由如下:
qxu@debian:/etc/X11/Xsession.d$ cat 40x11-common_xsessionrc
# This file is sourced by Xsession(5), not executed.
#Source user defined xsessionrc (locales and other environment variables)
if [ -r "$USERXSESSIONRC" ]; then
. "$USERXSESSIONRC"
fi
qxu@debian:/etc/X11$ grep USERXSESSIONRC Xsession
USERXSESSIONRC=$HOME/.xsessionrc
答案3
如果 bash 是您的登录 shell,那么它将按此顺序尝试~/.bash_profile
,~/.bash_login
和。~/.profile
然而它会停止在它找到的第一个时。
如果您的~/.profile
没有来源,则意味着您的目录中有其他两个之一(可能两个)HOME
。您应该检查哪一个,然后将新PATH
语句放在第一个语句中。
答案4
当 Bash 作为交互式登录 shell 或带有选项的非交互式 shell 被调用时
--login
,它首先从文件中读取并执行命令/etc/profile
(如果该文件存在)。读取该文件后,它会按顺序查找~/.bash_profile
、~/.bash_login
、 和~/.profile
,并从第一个存在且可读的文件中读取并执行命令。
因此,当~/.bash_profile
存在时,~/.profile
永远不会被读取。