私のセットアップの一部として、私たちの環境では、しばしば使用する必要があります
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.