1. 全局环境变量
printenv #显示所有的全局环境变量
set #显示所有的全局环境变量 + 局部环境变量
2. 全局变量和局部变量的区别
2.1 全局变量
所谓的全局变量就是在一个shell环境中打开的所有子shell进程中都可以用;比如:
$test="hello,cao" #新建一个局部变量
cat t
#!/bin/bash
echo "test=$test"
$ ./t #局部变量只能在当前shell环境中有效
test=
export test #把局部变量升级成全局变量
echo $test
hello,cao
./t #只要在此shell 环境中,运行的子程序都可以用全局变量
test=hello,cao
注意:即使是全局变量也只是在当前shell的子程序中有效,如果重新登录一台机器;全局变量也失效了。
2.2 删除一个全局变量
test="hello,cao"
export test
./t
test=hello,cao
unset test
./t
test=
3. 设置换变量
我们最常用的变量就是PATH变量了;我们在执行命令时发现 command not found 可以 which command 看这个command 的目录是否在 PATH里面;如果不再把目录加到PATH里面即可;
PATH=:$PATH:/home/user/bin
export PATH #手动 export 一下PATH 这样可以让新加的PATH立马生效
其实 PATH 只是一个局部变量;但在每次登录shell后 在 .bash_profile 文件中 exoprt PATH 所以,手动更新一下即可。
4. 定位系统的环境变量
- 登录shell :当登录linux系统时,bash shell 会作为登录shell启动;登录shell 会从 4个不同的文件中读取需要执行的命令。【读取文件的顺序是从 1---->4】
1. /etc/profile :是 登录shell的主启动文件,只要登录linux系统,bash就会启动 /etc/profile文件中的命令;
export PATH USER LOGNAME MAIL HOSTNAME HISTIZE HISTCONTORL
2. $HOME/.bash_profile
cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then #如果 .bashrc 文件存在,先执行.bashrc 文件中的命令
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin:/home/zhixia/bin/:/home/a/bin/:/home/zhengtai.csm/bin
export PATH
- 交换shell:
如果 bash shell 不是登录linux系统时启动的,比如 scp 命令 远程cp数据;此时启动的shell 叫做交互shell;此时jiaohushell 会直接访问 $HOME/.bashrc 执行里面的命令
- 非交换shell:
非交互shell就是执行 shell 脚本,./t.sh 时就是非交换的shell
5. 小结
环境变量就是用来给用户设置执行命令和脚本的环境的;用户可以在.bash_profile .bashrc 里面设置一下命令;这样在登录shell时会自动执行这些命令;比如 export PATH等
最常见的应用就是用:alias 命令;这样可以避免每次都收入 复杂的命令
alias -p
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
alias test="ssh hostname"