printenv
或者 env
查看当前环境变量
printenv HOME
或者 env HOME
(注意不加$符)
echo $HOME
(加$符号)
set
显示所有的环境变量(全局,局部,用户自定义)
局部变量
*
自己定义的局部变量小写(避免重新定义系统环境变量)
*
变量名,等号,值之间没有空格,否则会被当成单独的命令
*
值有空格的时候用引号界定首尾
my_variable="hello world"
自定义变量(当前shell,退出后失效)
echo ${my_variable}
打印值
全局变量
export my_variable
先创建局部变量,导出为全局变量
*
子shell中导出的全局变量不会改变父shell的全局变量的值
删除环境变量
unset my_variable
注意不要用($)
*
子shell中删除的全局变量不会反应到父shell中
默认的shell环境变量(部分)
变量 | 描述 |
---|---|
HOME | 用户当前的主目录 |
IFS | shell中的文本分隔符 |
PATH | shell查找命令的目录列表,冒号分割 |
COPROC | 占用未命名的协程进程的I/O文件描述符的数组变量 |
FUNCNAME | 当前执行的shell函数名称 |
LANG | shell当前语言 |
LINENO | 当前执行的脚本行号 |
OLDPWD | shell之前的工作目录 |
PWD | 当前工作目录 |
TMOUT | select 和 read 命令在没输入的情况下等待多久(秒单位),默认为0,无限长 |
设置PATH环境变量
PATH=$PATH:/home/newpath
添加newpath路径
*
将单点符加入环境变量,即可在程序的任意虚拟目录执行程序
/etc/profile
是bash shell默认的主启动程序
shell的启动文件顺序
$HOME/.bash_profile
$HOME/.bash_login
$HOEM/.profile
*bashrc
通常通过其他文件运行
数组变量
mytest=(one two three four five)
将值放入括号里,并用空格分割
echo $mytest
结果为one
echo ${mytest[2]}
结果为three, 环境变量的索引值从0开始
echo ${mytest[*]}
显示所有环境变量
mytest[2] = modi
修改其中的环境变量
unset mytest
删除环境变量