启动时获取bash newgrp功能

启动时获取bash newgrp功能,bash,Bash,作为我设置的一部分,我经常需要在我们的环境中使用 newgrp voodoo 如果我尝试将它放入.bashrc文件中,就会得到无限循环 您知道如何在启动时自动加载相同的功能吗?启动bash后,将启动两个脚本: 交互式shell的.bashrc 登录shell的.bash\u配置文件 根据运行newgrp命令的方式,将执行其中一个命令: newgrp-您的组将启动一个新的登录shell,从而读取.bash\u profile newgrp您的组(不带破折号)将启动一个新的交互式shell读

作为我设置的一部分,我经常需要在我们的环境中使用

newgrp voodoo
如果我尝试将它放入
.bashrc
文件中,就会得到无限循环


您知道如何在启动时自动加载相同的功能吗?

启动bash后,将启动两个脚本:

  • 交互式shell的
    .bashrc

  • 登录shell的
    .bash\u配置文件

根据运行
newgrp
命令的方式,将执行其中一个命令:

  • newgrp-您的组将启动一个新的登录shell,从而读取
    .bash\u profile

  • newgrp您的组(不带破折号)将启动一个新的交互式shell读取
    。bashrc

如果您不从另一个文件中获取源文件,那么您应该能够通过选择启动脚本和newgrp开关的正确组合来避免递归

  • 中的
    newgrp-…
    。bashrc
    将起作用

  • 中的
    newgrp…
    。bash\u profile
    将起作用

其他两个组合将导致您已经描述的递归。 如果这两个文件中的一个像人们经常看到的那样来源于另一个,那么无论如何你都会遇到麻烦

顺便说一句:如果
.bash\u profile
不存在,bash将读取文件
.profile
。我只是提到这一点,因为一些专家甚至设法从那里获取他们的
.bashrc

如果这两种组合都不适用于您的设置,您可能不得不求助于shell脚本。环境变量
$GROUPS
应报告您所属的组,例如:

[ "$GROUPS" = "200" ] || newgrp your_group

或者不管你的伏都教团体的id是什么都可能有帮助。

你可以用命令
id-gn
检查当前的团体id,然后只有当你不在正确的团体中时才调用
newgrp
。因此,您的
.bashrc
可以包括

# Switch groups, but only if necessary
if [[ `id -gn` != "mygroup" ]]
then
    newgrp mygroup
    exit
fi

请注意,此语法也适用于ksh。

看起来像是将其输入到~/.bash_配置文件中即可完成任务。谢谢