TCSH/CSH:set vs setenv命令差异

时间:2020-01-09 10:45:58  来源:igfitidea点击:

SET和SETENV命令之间有什么区别?

C Shell:set与setenv

c shell(tcsh或者csh)位于您和操作系统之间。
它充当命令解释器。
它读取您的命令,并将命令转换为Unix系统采取的操作。
当c shell启动时,它将读取其启动文件,并可以使用setenv命令设置环境变量。

所有通过setenv命令设置的变量都将自动导出到subshell中。
使用set command设置为csh的所有变量不会自动导出到subshell。
在此示例中,使用set命令设置一个称为vech的环境变量:

set vech=bus
echo "$vech"

启动一个新的shell

csh

尝试显示$vech,执行:

echo "$vech"

输出示例:

vech: Undefined variable.

现在,使用setenv命令尝试相同的操作:

setenv jaildir /nas/httpd
echo "$jaildir"
csh
echo "$jaildir"

输出示例:

/nas/httpd

简而言之,set命令用于此shell,setenv用于此shell和任何子shell。
通常,所有系统环境变量(例如$HOME,$USER,$MAIL,$PATH等)都使用setenv命令定义。