我在网络中的 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
但我无法测试它。