bash环境配置:
配置文件:
生效范围划分,存在两类:
全局配置:
/etc/profile,/etc/profile.d/*.sh
/etc/bashrc
个人配置:
~/.bash_profile
~/.bashrc
按功能划分,存在两类:
profile类:
为交互式登录的shell提供配置
/etc/profile,/etc/profile.d/*.sh
~/.bash_profile
功用:
1 定义环境变量,例如PATH,PS1
2 运行命令或脚本
bashrc类:
为非交互式登录shell提供配置
/etc/bashrc
~/.bashrc
功用:
定义命令别名
定义本地变量
变量:内存空间,变量名
类型:
环境变量 作用范围 当前shell进程及其子进程
本地变量 作用范围 当前shell进程
局部变量 作用范围 仅为当前shell进程中某代码片断(通常为函数上下文)
位置变量 $1 $2
特殊变量 $?
变量定义方式:
bash内置变量:可直接调用,内置了许多环境变量,例如:PATH等
自定义变量:
变量赋值: 变量=值
bash弱类型:
变量存储数据时,默认均采用字符形式;任何变量可以不经声明,直接引用
定义本地变量:
name=value
查看 set
定义环境变量
export name=value
declare -x name=value
查看 env, printenv,export
撤销变量:
unset name
引用变量:
${name}, $name
bash中的引用符号:
‘‘:强引用,变量不会被替换
"":弱引用
``:命令引用, 把一个命令的执行结果直接引用 例如:ls -l `which cat`
shell登录类型:
交互式登录:
直接通过终端使用账号密码进行的登录;
通过su - l USERNAME 命令实现的用户切换
非交互式登录
图形界面下打开的命令行窗口;
执行脚本;
su USERNAME命令;
配置文件作用次序
生效的变量是最后出现的变量
交互式登录:
/etc/profile ---> /etc/profile.d/*.sh ---> ~/.bash_profile --> /etc/bashrc
非交互式登录:
~/.bash --> /etc/bashrc/ --> /etc/profile.d/*.sh
编辑的配置文件定义的新配置如何生效
1 重新登陆
2 让当前shell去重新读取指定的配置文件
source /PATH/TO/SOMEFILE
. /PATH/TO/SOMEFILE
注意:副作用 读两遍后,环境变量在PATH出现两遍
问题:
- 定义对所有用都生效的别名?
通过编辑/etc/bashrc文件添加别名设置,将会对所有用户生效。
- 如果仅需要PATH环境变量的修改仅对root用户生效,该如何操作?
通过编辑root用户家目录下.bash_profile文件设置只对root用户生效的环境变量
如有错误,敬请指正!
谢谢!