Linux Bash 配置揭秘 shell - 猿码设计师

Linux Bash 配置揭秘 shell - 猿码设计师linux shell bash 配置;.bash_profile、.profile 和 .bashrc 约定; Login Shell vs. Non-login Shell;https://www.yuanmadesign.com/ymdesign/linux-shell-bash

.bash_profile、.profile 和 .bashrc 约定

Linux 和 OS X 上的 Bash 配置可能会让很多人感到困惑,包括我自己。我写了这个简短的指南来提醒你和我,你可以遵循一套合理的约定

Login Shell vs. Non-login Shell

当通过控制台登录时(例如 SSH 会话、在你弄乱了 GUI 设置后的可怕控制台登录等),你正在启动一个登录 shell。如果您从桌面打开一个终端应用程序(例如 xterm 等),那么您将启动一个非登录 shell(OS X 除外,稍后讨论)。

Linux (Ubuntu)

在全新安装的 Ubuntu 上,您会注意到您的主目录包含 .profile 和 .bashrc 文件。启动登录 shell 会执行 .profile,启动非登录 shell 会执行 .bashrc。请注意,在 .profile 中,您会发现

:::bash

# if running bash

if [ -n "$BASH_VERSION" ]; then

# include .bashrc if it exists

if [ -f "$HOME/.bashrc" ]; then

. "$HOME/.bashrc"

fi

fi

这意味着登录 shell 执行 .profile 然后 source .bashrc,而非登录 shell 只执行 .bashrc。

注意(如果您添加 .bash_profile)

您还应该知道,要启动登录 shell,bash 会按顺序查找 .bash_profile、.bash_login 和 .profile,它只会读取并执行找到的第一个。默认情况下,前两个在 Ubuntu 上不存在。像 RVM 这样的程序会添加一个 .bash_profile 文件,所以你应该确保追加

:::bash

[[ -s ${HOME}/.profile ]] && source ${HOME}/.profile

到添加的 .bash_profile 文件。(安装 RVM 后,您可能已经注意到 ls 着色从登录 shell 中消失了,因为 .bashrc 不再被获取,因为 .profile 被忽略了;这应该可以解决这些问题)。采购 .profile 意味着现在,每次启动登录 shell 时都会执行 .bash_profile,然后执行 .profile,最后执行 .bashrc。启动非登录 shell 只会像以前一样执行 .bashrc。

Mac OS X

在 OS X 的全新安装中,您应该有一个 .bashrc 文件和一个 .bash_profile 文件。与大多数 Unix/Linux 世界不同,OS X 终端应用程序(例如 Terminal、iTerm2 等)启动登录 shell。因此,无论您通过 SSH 连接到 OS X 机器还是启动终端应用程序,bash 都将作为登录 shell 启动。虽然 Ubuntu 默认使用 .profile,但 OS X 选择使用 .bash_profile(并且没有 .profile 文件),这在上面给出的列表中具有优先权。在 OS X 上的 .bash_profile 中,你会发现类似的代码:

:::bash

[[ -s ~/.bashrc ]] && source ~/.bashrc

就像 Ubuntu 的 .profile 源自 .bashrc 一样,OS X 的 .bash_profile 也源自 .bashrc。在 OS X 上,无论您是通过 GUI 登录并打开终端应用程序、SSH 还是在控制台登录,您都将启动一个登录 shell,该 shell 将执行 .bash_profile,然后执行 .bashrc。

我在哪里进行更改?

无论您使用 Linux 还是 OS X,任何与 bash 相关的更改(例如添加别名、函数或调整提示外观)都可以附加到 .bashrc。如果您已按上述设置采购,则 .bashrc 在 Linux 和 Mac OS X 上的登录和非登录 shell 中都执行。

另一个相关选项是附加

:::bash

[[ -s ${HOME}/.local.bash ]] && source ${HOME}/.local.bash

到 .bashrc,然后对 .local.bash 进行所有进一步的 bash 自定义更改。这在公司发行的机器上似乎很常见,因为管理员不喜欢用户乱用 .bashrc。如果您遇到这种情况,请将您的 bash 配置更改为 .local.bash。

为何不修改.bashrc?

顾名思义,.bashrc 用于 bash 配置。环境变量或其他配置设置通常应写入 Ubuntu 上的 .profile 和 OS X 上的 .bash_profile 。常见的愿望是扩展 PATH 变量:

:::bash

# Add path to Python scripts directory

PATH=/usr/local/share/python:$PATH

在 Linux 上,您可以将此路径扩展名附加到您的 .profile 中,除非您设置了一个 .bash_profile,该文件获取 .profile,然后获取 .bashrc(只需选择一个策略并保持一致)。再次登录您的机器,每个终端会话都将具有您定义的 PATH。这是因为 .profile(或 .bash_profile)在登录时执行,在任何非登录 shell 启动之前。我在第一次配置机器时进行了大部分 PATH 修改,因此在下次登录时应用更改是没有问题的。如果您现在需要应用您的更改,在您当前的非登录 shell 中,您可以:

:::bash

source ~/.profile # or ~/.bash_profile

在 OS X 上,您应该将该行添加到 .bash_profile,尽管您可以选择将 .bash_profile 设置为 source .profile 和 .bashrc 以与 Ubuntu 进行对称并将该行放入 .profile。

如果发现任何错误,请关注公众号,发信息给我。谢谢。

bash linux shell

» 转载保留版权:猿码设计师 » 《Linux Bash 配置揭秘》

» 本文链接地址:Linux Bash 配置揭秘 shell - 猿码设计师

» 如果喜欢可以:关注《猿码设计师》公众号

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值