linux setenv命令用于设置环境变量,可将一个变量设置为指定的值。该命令可在当前shell的环境中设置变量,也可在子进程中设置,被父进程继承。如果该变量已经存在,则该命令将会更新它的值。在设置变量时,该命令还提供了一些选项,例如可指定是否让变量在当前shell中可见或只在子进程中可见等。
命令名称
命令功能
设置环境变量的值
命令全称
Set Environment Variable
命令语法
setenv [变量名] [值]
setenv [variable name] [value] #[English]
命令参数
- #-
-n #禁止将变量导出到子进程,对当前shell生效
-p #打印出所有已经导出的变量名
-f #打印出所有已经导出的shell函数名
-i #限制只导出指定的变量,不允许导出未被指定的变量
NAME=VALUE #设置环境变量的值,例如:export PATH=/usr/local/bin:$PATH
命令原理
linux setenv 命令是用来设置环境变量的,在执行该命令时,系统会先检查该变量是否已经存在,如果已经存在则修改其值,如果不存在则创建该变量并设置其值。设置环境变量会影响到当前进程及其子进程的环境。使用该命令可以方便地修改和设置系统的环境变量,从而满足不同程序的需求。
用法举例
#设置环境变量PATH为"/usr/bin:/usr/local/bin"。
setenv PATH /usr/bin:/usr/local/bin
#设置默认编辑器为vi。
setenv EDITOR vi
#设置Java安装路径为"/usr/java/jdk1.8.0_191"。
setenv JAVA_HOME /usr/java/jdk1.8.0_191
#设置终端类型为"xterm-color"。
setenv TERM xterm-color
#设置DISPLAY环境变量,用于X Window显示。
setenv DISPLAY :0.0
#设置共享库搜索路径为"/usr/local/lib"。
setenv LD_LIBRARY_PATH /usr/local/lib
#设置man页搜索路径为"/usr/local/man:/usr/share/man"。
setenv MANPATH /usr/local/man:/usr/share/man
#设置默认语言为en_US.UTF-8。
setenv LANG en_US.UTF-8
#设置CVS的根路径为"/usr/local/cvsroot"。
setenv CVSROOT /usr/local/cvsroot
#设置历史记录大小为1000。
setenv HISTSIZE 1000
执行权限
所有用户
系统路径
/usr/bin/setenv
注意事项
该命令只能在shell中使用
系统自带
是
常用命令
是
命令分类
系统管理和配置
参数详解
#该命令将会从当前shell的环境中删除一个名为MY_VAR的环境变量。
setenv -u MY_VAR
#删除环境变量MYVAR
setenv -u MYVAR
#该命令将会将名为MY_VAR的环境变量的值设置为空字符串。
setenv -n MY_VAR
#将 /usr/local/bin 添加到 PATH 变量的开头而不是替换整个变量。
setenv -n PATH /usr/local/bin:$PATH
#将终端类型设置为 xterm-color,而不是替换整个 TERM 变量。
setenv -n TERM xterm-color
#将默认编辑器设置为 vim,而不是替换整个 EDITOR 变量。
setenv -n EDITOR vim
#将 /path/to/lib 添加到 LD_LIBRARY_PATH 变量的开头而不是替换整个变量。
setenv -n LD_LIBRARY_PATH /path/to/lib:$LD_LIBRARY_PATH
#将 /usr/local/share/man 添加到 MANPATH 变量的开头而不是替换整个变量。
setenv -n MANPATH /usr/local/share/man:$MANPATH
#清除环境变量MYVAR的值,但不影响其他变量
setenv -n MYVAR
#将环境变量MY_VAR的值设置为hello,但该变量不会导出到子进程的环境中。
setenv -n MY_VAR hello
#该命令将会创建一个新的进程环境,并在其中设置一个名为MY_VAR的环境变量,并将其值设置为"hello world"。
setenv -i MY_VAR "hello world"
#清除当前所有环境变量,然后将PATH设置为/usr/bin:/bin
setenv -i PATH /usr/bin:/bin
#清除当前环境变量PATH的值
setenv -i PATH
#清除所有环境变量的值
setenv -i
#清除当前用户的HOME变量的值
setenv -i HOME
#清除当前进程组的PS1变量的值
setenv -i PS1
#清除环境变量TERM的值,将其设置为xterm
setenv -i TERM=xterm
#清除当前环境变量,然后设置环境变量MY_VAR的值为hello。
setenv -i MY_VAR hello
#该命令将会将名为MY_VAR的环境变量的值设置为"hello world",并使其在当前shell和其他子shell中都可见。
setenv -g MY_VAR "hello world"
#将环境变量MY_VAR的值设置为hello。
setenv -g MY_VAR hello
#将环境变量PATH设置为只读,不允许修改或删除
setenv -p PATH
#清除所有shell函数定义
setenv -f
#将PATH变量设置为"/usr/local/bin:/usr/bin:/bin",如果PATH变量已经存在,则强制覆盖它。
setenv -f PATH /usr/local/bin:/usr/bin:/bin
#将TERM变量设置为"xterm-256color",如果TERM变量已经存在,则强制覆盖它。
setenv -f TERM xterm-256color
#将LANG变量设置为"en_US.UTF-8",如果LANG变量已经存在,则强制覆盖它。
setenv -f LANG en_US.UTF-8
#将EDITOR变量设置为"vim",如果EDITOR变量已经存在,则强制覆盖它。
setenv -f EDITOR vim
#将PAGER变量设置为"less",如果PAGER变量已经存在,则强制覆盖它。
setenv -f PAGER less
#将环境变量MY_VAR的值设置为hello。
setenv MY_VAR hello
命令报错原因
* setenv命令只在csh或tcsh shell下有效,不能在bash shell下使用。
* setenv命令需要指定变量名和变量值,如果没有指定则会报错。
* setenv命令不能用于只读变量,否则会报错。
* setenv命令不能用于已存在的变量,否则会报错。可以使用unsetenv命令先删除已存在的变量后再使用setenv命令。
* setenv命令的变量值不能包含空格,否则会报错。可以使用单引号或双引号将变量值括起来,以避免空格问题。
* setenv命令只能设置当前shell进程及其子进程的环境变量,对于其他进程的环境变量无法直接设置。