忽略来自另一个 shell 的变量

忽略来自另一个 shell 的变量

我在网络中的 Linux 工作站上使用“旧”发行版。此外,登录 shell 强制使用 CSH。我已经询问管理员是否可以切换到另一个(我想使用 bash),但不行...

因此,我从命令行运行 bash,作为交互式非登录 shell(实际上,我使用 gnome 和 gnome-terminal,其配置文件以 /bin/bash -i 作为命令运行)。我的很多脚本(如果不是全部的话)都使用 bash,因此我使用脚本调用 bash 从 bash 运行它们。这很麻烦,但确实有效。

我的 $HOME 中有一个 .cshrc 文件,其中包含在 .login 中定义的 csh 环境变量、别名和选项,以及一个 .cshrc 文件。我还有一个 .bashrc/.bash_profile(如果这是一个交互式 shell,则重定向到 .bashrc)/.bash_aliases,其中包含一些其他变量和一些相同的变量。当我运行 bash shell 时,我会从 .login 文件中定义的环境变量中继承。我想在运行 bash 时忽略此文件中设置的所有内容。

我想知道是否有一个选项可以运行 bash,当我运行 BASH shell 时,忽略先前从我的 CSH 登录会话定义的所有其他环境变量。

你有什么想法?

谢谢

答案1

您不需要手动取消设置不想继承的变量,而是使用以下env命令运行 bash:

env -i bash

-i标志导致bash忽略其继承的环境。

答案2

您想在 CSH 内部以非交互式 shell 形式运行 bash,并在 .bash_profile 中定义 bash 变量,对吗?

你可以试一试:

./bash --login
source ./bash --login

但我无法测试它。

相关内容