set, setenv, export的区别
写在前头,首先要认识
何为环境变量
环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,
如:临时文件夹位置和系统文件夹位置等
。(摘自百度百科)
简单来说,环境变量是系统的变量,当要用到某个程序的时候,告诉系统根据环境变量中设置的路径(path)去哪个地方找这个程序
1.说明
使用
set
和
setenv
命令可以设置shell选项或者列出shell变量,其中
setenv
是
csh
的命令,在
bash
中用
export
命令。
2.语法格式
①
set
set 变量名 = 内容
set 变量名 =(内容1 内容2 )
set 变量名 =”内容1 内容2″
②
setenv
setenv 变量名 内容
setenv 变量名 “内容1 内容2”
setenv 变量名 ‘内容1 内容2’
③
export
设置内部变量
export 变量名
设置环境变量
export PATH = ${路径}/def:$PATH
:
的意思是并列
在bash里写的
export
要通过
source
命令来执行,单独
./
不可行
除了export可直接在终端上使用,其余都不行。这几个设置都可以通过
unset
清除
3.查看
①查看单个环境变量
echo $变量名
②查看全部环境变量
env
③查看内部变量
set
4.环境变量、全局变量和局部变量
环境变量
:除了在shell中使用还可以在子进程中使用,但不同的shell之间不能通用。
全局变量
:可以在shell中使用。
局部变量
:只能在函数内部使用。
全局变量
和
局部变量
都可以理解为
内部变量
不同于环境变量,内部变量只能在shell内实现,可通过export 输出为环境变量
环境变量
可以被子进程(如 bash 进入子shell)继承而
内部变量
不可以继承,改变
环境变量
就会自动改变
内部变量
,反之不然。
set
列出
内部变量
列表,
env
列出
环境变量
列表。
有关变量的详细讲解可以看看这篇笔记
Shell变量的作用域:Shell全局变量、环境变量和局部变量