tcsh 中什么时候设置环境变量?

tcsh 中什么时候设置环境变量?

我使用命令在 .tcshrc 文件中设置了很多环境变量setenv
当我今天需要取消设置其中之一时,我移动了这个文件并打开了一个新终端(这一切都在 Gnome 图形环境中),期望我在 .tcshrc 中设置的环境变量不再位于环境中。
但其中一些变量仍然是固定的;它们还可以设置在哪里?我知道我的 .login 文件是空的。

setenv 命令比我想象的更加全局化吗?当我通过 alt-ctrl-F2 打开新的虚拟终端时,变量不再设置。

答案1

这与会话和登录 shell 相关,而不是与普通 shell 相关。

当您启动一个新会话时(这是您登录时发生的情况,无论是通过虚拟终端还是启动新的桌面会话),登录过程都会创建一个裸环境,然后您tcsh将作为登录 shell 被调用,执行其启动例程,其中包括处理全局启动文件(如/etc/csh.cshrc)和您的.tcshrc文件。

因此,在这种情况下,您一定会看到所有更改。

当您启动“普通”shell(从桌面环境或从tcsh现有 shell 运行)时,不会清理环境,也不会处理全局文件(但会处理本地配置文件)。

由于环境未清理,您的新的普通 shell 会从其父级(桌面系统的进程之一)继承它。该进程已读取您的配置文件的先前版本,因此它仍然设置了旧的环境变量。

通过注销桌面会话并重新登录,您将看到所做的更改生效。

请参阅tcsh手册页了解何时处理哪些文件。

相关内容