Shell 编程之环境变量配置文件
环境变量配置文件
变量类型:
- 用户自定义变量(本地变量)
- 环境变量
- 预定义变量
- 位置参数变量
环境变量作用:定义每个用户的操作环境。环境变量举例:path、ps1
source 命令
修改配置文件后,必须注销重新登录才能生效。但是使用 source
命令可以不用重新登录。
source 配置文件
// 或者
. 配置文件
特别注意:在 linux 中,所有以点(.) 开头的文件都是隐藏文件。
环境变量配置文件简介
环境变量配置文件中主要是定义对系统操作环境生效的系统默认环境变量,如 PATH 等。
常见环境变量配置文件:
- /etc/profile:是全局的 profile 文件,设置后会影响到所有用户;
- /etc/profile.d/*.sh:全局的
- ~/.bash_profile:用户级别的,每个用户在自己的用户目录下都有自己的
.bash_profile
文件; - ~/.bashrc:用户级别的,每个用户在自己的用户目录下都有自己的
.bashrc
文件; - /etc/bashrc:为每一个运行
bash shell
的用户执行此文件,当bash shell
被打开时,该文件被读取;
特别注意: .bash_profile
是隐藏文件,在 Linux 中所有以 .
开头文件都是隐藏文件,需要使用 ls -a
命令才能看到。放在 /etc
目录下的环境变量配置文件对所有用户有效;放在 ~/
目录下的环境变量配置文件只对当前用户有效。
正常输入用户名密码的登录过程配置文件加载顺序:
- /etc/profile -> /etc/profile.d/*.sh -> /etc/profile.d/lang.sh -> /etc/sysconfig/i18n
- ~/.bash_profile -> ~/.bashrc -> /etc/bashrc -> 命令提示符
从超级用户切换到其他用户时配置文件加载顺序:(只是用户切换,没有登录)
- /etc/bashrc -> /etc/profile.d/*.sh -> /etc/profile.d/lang.sh -> /etc/sysconfig/i18n -> 命令提示符
/etc/profile 环境变量配置文件的作用
修改历史命令条数:HISTSIZE
~/.bash_profile 环境变量配置文件的作用
- 调用
~/.bashrc
文件 - 在 PATH 变量后面加入了":$HOME/bin"这个目录
.bashrc 环境变量配置文件的作用
- 定义命令别名 alias
- 调用
/etc/bashrc
文件
.bashrc
文件类似于 /etc/bashrc
,不需要重启生效,重新打开一个 bash 即可生效。 /etc/bashrc
对所有用户新打开的 bash 都生效,但 ~/.bashrc
只对当前用户新打开的 bash 生效。
.zshrc
也有相同作用,用来定义命令别名。
/etc/bashrc 环境变量配置文件的作用
- PS1(修改登录提示符) 变量
- umask
- PATH 变量
- 调用/etc/profile.d/*.sh 文件
如果我们想对所有用户修改某个配置,并在修改以后新打开的 bash 时都生效。可以通过修改这个文件来实现,修改这个文件不用重启, 重新打开一个 bash 即可生效 。
.bash_history
保存历史命令。
/etc/sysconfig/i18n
定义系统默认语言。
umask 命令
umask 命令可以用来查看系统默认权限。
➜ ~ umask
// 022 就是系统默认权限
022
当我们新建一个文件时,默认权限就是 022
。
- 默认新建的文件最高权限为 666(即只有读写权限,没有执行权限,如果需要执行权限,需要自己手动添加)
- 目录最高权限为 777(对于目录而言,执行权限即可以 cd 到该目录)
- 权限不能使用数字进行换算,而必须使用字母
- umask 定义的权限,是系统默认权限中准备丢弃的权限
// 新建一个文件和目录,并查看对应的文件和目录权限
touch demo.js
mkdir demo
drwxr-xr-x 2 liujie26 672505530 68B 4 21 20:21 demo
-rw-r--r-- 1 liujie26 672505530 0B 4 21 20:20 demo.js
// 新建一个脚本文件
➜ ~ touch demo.sh
// 权限是 644
➜ ~ ll demo.sh
-rw-r--r-- 1 liujie26 672505530 0B 4 21 20:28 demo.sh
// 没有执行权限
➜ ~ ./demo.sh
zsh: permission denied: ./demo.sh
// 增加执行权限
➜ ~ chmod 777 demo.sh
➜ ~ ll demo.sh
-rwxrwxrwx 1 liujie26 672505530 80B 4 21 20:30 demo.sh
// 可以正常执行
➜ ~ ./demo.sh
1
2
^C
# r=4 w=2 x=1
文件最高权限为 666,默认权限为 022
666 换算成字母为:rw-rw-rw-
022 换算成字母为:----w--w-
// 这里是将最高权限字母中的默认权限包含的字母改为-
// 即将 rw-rw-rw-中后两组中的 rw-改为 r--
666 - 022 = 644 换算为字母为:rw-r--r--
目录最高权限为 777,默认权限为 022
777 换算成字母为:rwxrwxrwx
022 换算成字母为:----w--w-
777 - 022 = 755 换算为字母为:rwxr-xr-x
环境变量配置文件的功能
其他配置文件
注销时生效的环境变量配置文件
// 可以用来退出登录时清除历史命令
~/.bash_logout
.bash_history(保存历史命令)
// 历史命令记录保存在硬盘的~/.bash_history 文件中
~/.bash_history
需要注意:当前登录后的命令先保存在内存中,正确退出后才写入文件。
Shell 登录信息
本地终端欢迎信息:/etc/issue
远程终端登录提示信息环境变量配置文件(/etc/issue.net)
- 不支持转义符,即转义符在
/etc/issue.net
文件中不能使用; - 是否显示此欢迎信息,由 ssh 的配置文件
/etc/ssh/sshd_config
决定,加入"Banner /etc/issue.net"
行才能显示,记得重启 SSH 服务->service sshd restart
。
登录后欢迎信息:/etc/motd
不管是本地登录,还是远程登录,都可以显示此欢迎信息。
问题汇总
Mac 每次都要执行 source ~/.bash_profile
配置的环境变量才生效
当我们在 ~/.bash_profile
中配置环境变量后,每次重启终端后配置的不生效。需要重新执行:
$source ~/.bash_profile
发现 zsh 加载的是 ~/.zshrc
文件,而 .zshrc
文件中并没有定义任务环境变量。
解决办法:在 ~/.zshrc
文件最后增加一行:
source ~/.bash_profile
参考文档
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
下一篇: Shell 编程之条件判断与流程控制
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论