我正在使用Linux Mint。我的登录shell(cat /etc/passwd | grep myUserName
)是bash。
在启动图形桌面环境并从中运行终端仿真器之后,我可以看到它.bash_profile
不是源代码(其中设置的环境变量未export
设置)。但是,如果我从文本控制台(ctrl+ alt+ F1)登录或bash -l
从终端仿真器手动运行,则.bash_profile
可以正常工作。
我认为.bash_profile
应该在X启动时提供该资源,并且所有export
'ed vars应该在从X运行的终端中可用时,我错了吗?
PS将所有内容.bashrc
放进去并从中购买.bash_profile
不是一个好主意(https://stackoverflow.com/questions/902946/):环境材料应仅获得一次。
~/.bash_profile
当它是登录shell时,文件将被bash读取。这就是您以文本模式登录时得到的。
在X下登录时,启动脚本由执行/bin/sh
。在Ubuntu和Mint上,/bin/sh
是dash而不是bash。Dash和Bash都具有相同的核心功能,但是短划线坚持了这些核心功能,以便变得既快又小,而Bash增加了很多功能,但需要更多资源。对于不需要额外功能的脚本,通常使用破折号;对于交互使用,bash则很常见(尽管zsh 具有很多更好的功能)。
显示管理器的大多数组合读取和桌面环境(你在那里输入您的用户名和密码的程序)~/.profile
从登录脚本/etc/X11/Xsession
,/usr/bin/lightdm-session
,/etc/gdm/Xsession
或以适用者为准。因此,将您的环境变量定义放在中~/.profile
。确保仅使用破折号支持的语法。
那你应该放在哪里呢?
好.bash_profile
加载.profile
,.bashrc
如果外壳是交互式的,则加载。
. ~/.profile
if [[ $- == *i* ]]; then . ~/.bashrc; fi
在中.profile
,放入环境变量定义和其他会话设置,例如ulimit
。
.bashrc
,放置bash交互式设置,例如别名,函数,完成,键绑定(不在中.inputrc
),…本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句