作为我设置的一部分,我经常需要在我们的环境中使用
newgrp voodoo
如果我尝试将其放入.bashrc
文件中,则会出现无限循环。
任何想法如何在启动时自动加载相同的功能?
启动 bash 后,将启动 2 个脚本:
.bashrc
用于交互式外壳
.bash_profile
用于登录外壳
根据您运行newgrp
命令的方式,其中之一将被执行:
newgrp - your_group
将启动一个新的登录 shell 并因此读取.bash_profile
newgrp your_group
(没有破折号)将开始一个新的交互式 shell 阅读.bashrc
如果您不从另一个文件中获取一个文件,您应该能够通过选择启动脚本和 newgrp 开关的正确组合来规避递归
newgrp - ...
在.bashrc
将工作
newgrp ...
在.bash_profile
将工作
其他两种组合将导致您已经描述的递归。如果两个文件中的一个像经常看到的那样来自另一个文件,那么无论如何您都会遇到麻烦。
顺便说一句:如果.bash_profile
不存在 bash 将改为读取文件.profile
。我只是提到它,因为一些专家甚至设法.bashrc
从那里采购。
如果这两种组合都不适用于您的设置,则您可能不得不求助于 shell 脚本。环境变量$GROUPS
应该报告您所属的组,例如:
[ "$GROUPS" = "200" ] || newgrp your_group
或者您的巫毒教团体的 id 可能会有所帮助。
您可以使用命令检查当前组 id id -gn
,然后newgrp
仅在您不在正确组中时才调用。所以你.bashrc
可以包括
# Switch groups, but only if necessary
if [[ `id -gn` != "mygroup" ]]
then
newgrp mygroup
exit
fi
旁注,此语法也适用于 ksh。