私のセットアップの一部として、私たちの環境では、しばしば使用する必要があります
newgrp voodoo
ファイルに入れようとすると、.bashrc無限ループが発生します。
起動時に同じ機能を自動的にロードする方法はありますか?
私のセットアップの一部として、私たちの環境では、しばしば使用する必要があります
newgrp voodoo
ファイルに入れようとすると、.bashrc無限ループが発生します。
起動時に同じ機能を自動的にロードする方法はありますか?
bash を起動すると、次の 2 つのスクリプトが開始されます。
.bashrcインタラクティブシェル用
.bash_profileログインシェル用
newgrpコマンドの実行方法に応じて、そのうちの 1 つが実行されます。
newgrp - your_group新しいログインシェルを開始し、読み取ります.bash_profile
newgrp your_group(ダッシュなし) は、新しい対話型シェルの読み取りを開始します.bashrc
あるファイルを別のファイルからソースしない場合は、起動スクリプトと newgrp スイッチの適切な組み合わせを選択することで再帰を回避できるはずです
newgrp - ...で.bashrc動作します
newgrp ...で.bash_profile動作します
他の 2 つの組み合わせは、既に説明した再帰につながります。よく見られるように、両方のファイルの一方が他方をソースとしている場合、とにかく問題が発生します。
ところで:.bash_profile存在しない場合、bashは.profile代わりにファイルを読み取ります。一部の専門家はそこからソースを入手することさえできるので、私はそれについて言及し.bashrcます.
どちらの組み合わせもセットアップに当てはまらない場合は、代わりにシェル スクリプトを使用する必要があります。環境変数$GROUPSは、あなたがメンバーであるグループを報告する必要があるため、次のようになります。
[ "$GROUPS" = "200" ] || newgrp your_group
またはブードゥーグループのIDが何であれ役立つかもしれません。
You can check the current group id with the command id -gn, then call newgrp only if you aren't in the right group. So your .bashrc could include
# Switch groups, but only if necessary
if [[ `id -gn` != "mygroup" ]]
then
newgrp mygroup
exit
fi
Side note, this syntax also works for ksh.