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

Ant*_*ioK 44 shell bash login profile

我正在使用 Linux Mint。我的登录 shell ( cat /etc/passwd | grep myUserName) 是 bash。

在我启动我的图形桌面环境并从中运行终端模拟器后,我可以看到它.bash_profile没有来源(其中exported 的环境变量未设置)。但是,如果我从一个文本控制台登录(ctrl+ alt+ F1)或手动运行bash -l从终端仿真器,.bash_profile工作正常。

当我认为.bash_profile应该在 X 启动时获取并且所有export'ed vars 应该在终端中可用,从 X 运行时,我错了吗?

PS 将所有内容放入.bashrc并从中采购.bash_profile并不是一个好主意(/sf/ask/63206251/):环境的东西应该只采购一次。

Gil*_*il' 50

~/.bash_profile当它是登录外壳时,该文件由 bash 读取。这就是您以文本模式登录时得到的结果。

当您在 X 下登录时,启动脚本由/bin/sh. 在 Ubuntu 和 Mint 上,/bin/shdash,而不是 bash。Dash 和 bash 都具有相同的核心功能,但 dash 坚持这些核心功能是为了快速和小巧,而 bash 以需要更多资源为代价添加了许多功能。通常将 dash 用于不需要额外功能的脚本,将 bash 用于交互式使用(尽管zsh 有很多更好的功能)。

显示管理器的大多数组合读取和桌面环境(你在那里输入您的用户名和密码的程序)~/.profile从登录脚本/etc/X11/Xsession/usr/bin/lightdm-session/etc/gdm/Xsession或以适用者为准。所以把你的环境变量定义放在~/.profile. 确保仅使用 dash 支持的语法。

那你应该把什么放在哪里?

  • 良好的.bash_profile负载.profile.bashrc如果外壳是交互式的,则加载。

    . ~/.profile
    if [[ $- == *i* ]]; then . ~/.bashrc; fi
    
    Run Code Online (Sandbox Code Playgroud)
  • 在 中.profile,放置环境变量定义和其他会话设置,例如ulimit.

  • 在 中.bashrc,放入 bash 交互设置,例如别名、函数、完成、键绑定(不在 中.inputrc),...

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


les*_*ana 20

.bash_profile是bash的启动配置脚本。不存在强制 X 到 source 的标准.bash_profile

你想到的是.profile。原来是bourne shell(sh)的启动配置文件。今天,许多发行版都将其桌面环境设置为 source .profile. 请注意,这也不是标准,但它似乎是一种约定。

Debian 曾经.profile在图形登录(截至 2013 年的 wiki 页面)时提供源代码,但现在没有(截至 2016 年的 wiki 页面)。

.xprofile图形登录时的Arch 源代码(截至 2013 年的 wiki 页面)。

Ubuntu 过去不鼓励使用.profile截至 2013 年的 wiki 页面),现在它不再劝阻(截至 2016 年的 wiki 页面)。


关于你的另一个问题:为什么我的 ~/.bash_profile 不起作用?这是预期的行为。

简而言之,行为如下:

  • bash 作为交互式登录 shell 启动:读取 ~/.profile
  • bash 作为交互式非登录 shell 启动:读取 ~/.bashrc

有关更多详细信息,请参阅我在 askubuntu 中对类似问题的回答:https ://askubuntu.com/questions/132276/configure-gnome-terminal-to-start-bash-as-a-login-shell-doesnt-read-bashrc /132319#132319

  • “*Ubuntu 特别不鼓励使用`.profile`([链接](https://help.ubuntu.com/community/EnvironmentVariables))*”维基曾经(荒谬地)不鼓励这样做;这已被修复。(注意 `/etc/profile` 仍然不鼓励用于系统范围的分配,而是优先将脚本添加到 `/etc/profile.d`。)每用户 `.profile` 文件现在作为推荐的设置方式之一呈现每个用户的环境变量:“适合仅影响特定用户(而不是整个系统)的环境变量设置的文件是 **~/.pam_environment** 和 **~/.profile**。” (2认同)

归档时间:

查看次数:

97018 次

最近记录:

7 年,6 月 前