bashrcの読み取り専用TMOUTがログイン時にTMOUTが読み取り専用であるという複数のメッセージが表示されるのはなぜですか?

bashrcの読み取り専用TMOUTがログイン時にTMOUTが読み取り専用であるという複数のメッセージが表示されるのはなぜですか?

TMOUT変数とさまざまな提案を調べた後、/etc/bashrcファイルに次のように設定しました。

TMOUT=600
readonly TMOUT
export TMOUT

ユーザーがログインすると、TMOUTは600に設定され、読み取り専用に設定されてエクスポートされますが、次のエラーが発生します。

-bash: TMOUT: readonly variable
-bash: TMOUT: readonly variable

どんな提案がありますか?

ベストアンサー1

/etc/bashrc一度以上持ってくると思います。

echo "TMOUT=<$TMOUT>: ${BASH_SOURCE[*]}"

作業前に1行。

AFAIR はデフォルトでは提供されていませんが、/etc/bashrc明示的に提供され、~/.bashrcRHEL と同様のディストリビューションでのみ提供されます。

ただし、変数をエクスポートして読み取り専用にすることは、期待どおりに機能しません。

(readonly FOO=33; export FOO; bash -c 'FOO=47')
  # no error

環境変数はシェルの「読み取り専用」属性を認識しません。これは現在のセッション/スクリプト内でのみ機能します。

これは、ユーザーがTMOUT単に別のシェルを実行してシェルをバイパスできることを意味しますenv -u TMOUT bash --norc。読み取り専用に設定すると問題のみが発生します。

おすすめ記事