为什么我的〜/ .bash_profile不起作用?

安东尼奥·K

我正在使用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/shdash而不是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),…

另请参见登录外壳程序和非登录外壳程序之间的区别?.bashrc的替代

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我的代码不起作用?

来自分类Dev

为什么getchar()对我不起作用?

来自分类Dev

为什么我的排序不起作用?

来自分类Dev

为什么我的线程不起作用?

来自分类Dev

为什么导出的变量而不是.bash_profile的别名在非登录shell中起作用?

来自分类Dev

为什么我的ItemListener不起作用?

来自分类Dev

为什么我的OpenGL不起作用?

来自分类Dev

为什么.bashrc / .bash_profile文件在Windows中起作用

来自分类Dev

为什么我的if(-f)不起作用?

来自分类Dev

为什么我的$ PATH比.bash_profile长得多

来自分类Dev

为什么我的for循环不起作用?

来自分类Dev

为什么我的阵列不起作用?

来自分类Dev

为什么我的列表不起作用?

来自分类Dev

为什么我的测试不起作用?

来自分类Dev

为什么我的lambda不起作用?

来自分类Dev

为什么我的bash数组附加操作不起作用?

来自分类Dev

为什么我的setOnKeyListener()不起作用?

来自分类Dev

为什么我的TTS不起作用?

来自分类Dev

为什么我的printf不起作用?

来自分类Dev

为什么我的递归不起作用?

来自分类Dev

为什么我的菜单不起作用?

来自分类Dev

为什么我的bash脚本不起作用?

来自分类Dev

BASH脚本:为什么我的变量不起作用

来自分类Dev

为什么我的排序不起作用?

来自分类Dev

为什么我的延误不起作用?

来自分类Dev

为什么我的模态不起作用?

来自分类Dev

为什么导出的变量而不是.bash_profile的别名在非登录shell中起作用?

来自分类Dev

为什么我的bash脚本不起作用?

来自分类Dev

为什么 os.system("source /home/oracle/.bash_profile") 不起作用