取消设置C-Shell中的所有环境变量

时间:2018-10-22 03:44:58

标签: linux shell csh

我想通过C-shell脚本取消设置所有环境变量。 使用unsetenv *命令,我可以使用命令行来完成。 我们如何使其在脚本中起作用? 运行脚本时我碰到了undefined identifier issue

1 个答案:

答案 0 :(得分:0)

来自tcsh(1)

   unsetenv pattern
           Removes  all  environment  variables whose names match pattern.
           `unsetenv *' thus removes all environment variables; this is  a
           bad idea.  It is not an error for nothing to be unsetenved.

因此,使用unsetenv * 应该有效。您可能有(可能是较旧的)(t)csh版本不支持此功能?

无论哪种方式,正如手册页上所述,取消设置所有内容可能不是一个好主意。您将需要保留各种变量,例如HOMEUSER等。更好的方法可能是:

foreach e (`env`)
    set name = `echo "$e" | cut -d "=" -f 1`

    # Note: this list should be longer.
    if ( "$name" != "HOME" ) then
        unsetenv "$name"
    endif
end