Bash的配置文件
- /etc/profile
- ~/.bash_profile
- ~/.bash_login
- ~/.profile
- ~/.bash_logout
- /etc/bash.bash_logout
- /etc/bashrc
- ~/.bashrc
~是用户的家目录。家目录是的配置文件只对该用户起作用。
要仔细理清楚这些配置文件的作用,和使用场景。需要了解交互式shell和非交互式shell,登录shell和非登录shell。
另:还有一个环境变量BASH_ENV.
在非交互式shell中,会是寻找这个环境变量,如果这个环境变量不为空,就按照值去找到这个文件,并加载进来。
1
2
3 if [ -n "$BASH_ENV" ]; then
. "$BASH_ENV"
fi
交互式shell和非交互式shell
交互式:很好理解,输入一个东西,返回一个结果;再输入一个东西,再返回一个结果。这样一来一回,就是交互式。
交互式shell:在shell终端上,就是交互式shell
非交互式shell:在shell脚本中,不需要一来一回,直接执行,就是非交互式shell。
登录shell和非登录shell
登录shell:就是要登录,要输入账号密码这样的信息。典型的:ssh登录;bash –login模式
非登录shell:就是不需要输入账号密码的情况。典型的:登录到本地linux后,打开的shell终端。
实际验证
简单配置一点信息,方便测试
1 | echo "echo '/etc/profile'" >> /etc/profile |
ssh登录
1 | $ ssh vm-101 |
终端登录
1 | Last login: Thu Apr 23 19:11:04 2020 from vm-1 |
用bash命令启动一个终端
1 | $ bash |
用bash –login启动一个终端
1 | $ bash --login |
直接打开一个新终端
1 | Last login: Thu Apr 23 19:08:32 on ttys002 |
手动加载这些配置文件
用两个命令:source 和 .
对,没错。”.“,一个点这个符号也是一个命令。
1 | $ which . |
学习方法
不需要死记,但是要知道这些概念。能理解最好。
可能会遇到的问题:
- 你写的脚本,自己测试是好好的,但是给别人就有问题
- 脚本写好了,放在系统中定时运行,就出问题