.bashrc改不改

.bashrc干什么

我们谈论的是Linux系统。Unix类系统也可以参考,但Windows系统就别看了。

如果我们用ls -a命令查看用户主目录下的文件,我们可以发现有4个带"bash"的文件:

  • .bashrc:非登录Session初始化时执行的配置。
  • .bash_profile:登录Session初始化时执行的配置。
  • .bash_logout:退出bash shell时运行的脚本。可能为空,也可能有一些内容。
  • .bash_history:bash输入命令的历史记录。

登录 Session 是用户登录系统以后,系统为用户开启的原始 Session,通常需要用户输入用户名和密码进行登录。

而非登录 Session 是用户进入系统以后,手动新建的 Session,这时不会进行环境初始化。比如,在命令行执行bash命令,就会新建一个非登录 Session。

当然,这里我说的都只是用户的配置文件,在加载用户的配置文件之间会先加载系统的配置文件。
更详细的知识见阮一峰Bash脚本教程

该不该直接改.bashrc

如果要加环境变量,网上一般是让改.bashrc。为什么?因为在.bash_profile里一般是引用了.bashrc的。

# .bash_profile

# Get the aliases and functions
if [ -f  ~/.bashrc ]; then
    . ~/.bashrc
fi

# User specific environment and startup programs

PTAH="$PATH:$HOME/.local/bin:$HOME/bin"

export PATH

这也就带来了一个问题,如果直接改.bashrc,一旦改出了一些严重的问题,就可能导致无法登录的情况。所以不推荐直接改.bashrc

那么,有没有安全一点的方法?

更安全的方法

当然有,只不过可能有点麻烦。

不去修改.bashrc,而是把你需要的环境变量什么的写到一个新的文件里。每次需要运行的时候,source你新写的那个文件。

比如我需要加一些环境变量。那么我把环境变量写到一个叫作.mybashrc的全新的文件里。然后每次我登录的时候,就执行:

source .mybashrc

最安全,因为根本没有改.bashrc.bash_profile。而且如果你改的环境变量有问题,退出之后重新登录就好了。

只不过有点麻烦,因为每次登录都需要source一下。

鱼和熊掌不可兼得,要安全只能牺牲方便。

牺牲一小点安全的折中方法

注:对有一定能力的人:

有一个折中的方法,就是在.bash_profile里加入判断逻辑,每次登录时选择一下是否运行.bashrc。比如在.bash_profile末尾加入这些指令:

read -t 10 -p "10秒倒计时,是否载入.bashrc? [Y/n]: " var
var=${var:-"yes"}
if [[ ${var,,} == "yes" || ${var,,} == "y" ]]; then
    echo -e "载入中"
    source ~/.bashrc
else
    echo -e "取消载入"
fi

这样如果出问题,就有更改的余地。

tmux默认开启的是登录shell (login shell) ,可以通过在.tmux.conf文件里加入这条设置来改变:

set -g default-command bash

# 或者这条: 
set-option -g default-shell bash

(但你这不是需要改.bash_profile文件吗?

(所以这段只针对有一定能力的人

一些杂谈

bashrc中的rc是什么含义?

posted @ 2024-09-26 17:58  砥安  阅读(4)  评论(0编辑  收藏  举报