Ant*_*ioK 44 shell bash login profile
我正在使用 Linux Mint。我的登录 shell ( cat /etc/passwd | grep myUserName
) 是 bash。
在我启动我的图形桌面环境并从中运行终端模拟器后,我可以看到它.bash_profile
没有来源(其中export
ed 的环境变量未设置)。但是,如果我从一个文本控制台登录(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/sh
是dash,而不是 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 不起作用?这是预期的行为。
简而言之,行为如下:
~/.profile
~/.bashrc
有关更多详细信息,请参阅我在 askubuntu 中对类似问题的回答:https ://askubuntu.com/questions/132276/configure-gnome-terminal-to-start-bash-as-a-login-shell-doesnt-read-bashrc /132319#132319
归档时间: |
|
查看次数: |
97018 次 |
最近记录: |