这个问题困扰了我一段时间。偶尔我会在.tcshrc文件中设置一个环境变量。一旦我不再需要它,我会从我的.tcshrc文件中删除它;但是,由于某种原因,变量在我的shell中成为永久变量。我认为.tcshrc文件中的所有内容在评论或删除设置后都不是永久性的。这特别发生在我想添加的新PATH中。现在我不再需要它,从.tcshrc文件中删除它什么都不做。
答案 0 :(得分:2)
您的.tcshrc是一个可执行脚本。您必须实际执行它才能对其进行更改以产生任何效果。这通常会在您启动新shell时自动发生。
您可能遇到的另一个问题是子进程继承的环境变量。如果你的.tcshrc添加到变量而不是覆盖它们(这对于PATH来说并不常见),那么这可能会导致你看到的行为。您当前的shell进程在PATH中有额外的条目,即使子shell没有将添加到PATH(由于您最近的.tcshrc更改),它已经存在。
答案 1 :(得分:1)
.tcshrc中设置的环境变量会影响使用该版本的.tcshrc 的任何tcsh shell 。修改文件会影响您启动的任何将来的tcsh进程,但它对任何现有进程都没有影响。一旦在shell进程中设置了变量,取消设置它的唯一方法是使用“unsetenv”命令(或“setenv”具有不同的值)。
当前tcsh进程中的任何环境变量(使用旧版.tcshrc的环境变量)也将由您从tcsh调用的任何进程继承。
例如:
setenv FOO BAR
启动新的tcsh流程。 $ FOO设置为“BAR”。