作为我设置的一部分,我经常需要在我们的环境中使用
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。