ここには読み取り専用のBash変数があります。その変数の設定を解除することはできません。
$ echo $TMOUT
1800
回避策として、これらの行を書きました(私のセッションが終了しないこと)
#!/usr/bin/Perl
$|++;
while (1) { print "\e[0n"; sleep 120; }
CentOS7/RHEL7リポジトリに(上記のPerlコードのように)同様のことをする公式パッケージ(rpm)はありますか? vimエディターを開くのは好きではありません。コマンドが必要です。
コマンドラインからPerlコマンドを発行できます...
Perl -e '$|++; while (1) { print "\e[0n"; sleep 120; }'
または、シェルでも同じことができます(sh
/bash
の例):
while sleep 120; do printf '\33[0n'; done
または、watch
を使用することもできます。
watch -n 120 printf '\33[0n'
これを.bash_profileの先頭に追加しますか?
if [ ! -z "$TMOUT" ]; then
env -i bash --init-file ~/.bash_profile
fi
タイムアウトの決定を無効にした結果として膨大な数の古いセッションを実行したままにした場合、システム管理者の怒りに注意してください。
ここにあるのは
セッション変数が"Read Only"の場合、現在のシェルプロセスを"exec"のコマンドに置き換える必要があります
つまり、あなたの質問に対する答えは:
$> exec env TMOUT=0 bash
しかし、私はより高いタイムアウト値を設定することをお勧めします
$> exec env TMOUT=3600 bash
私の場合、それは/etc/profile.d/bash_autologout.shで定義されています:
TMOUT=1800
readonly TMOUT
export TMOUT
それを見つけるために、私はやった:
Sudo find /etc/ -name "*" | xargs Sudo grep "TMOUT" 2>&1 | grep -v "filter..."
なぜ非インタラクティブセッションに切り替えないのですか?
# TMOUT=0
-bash: TMOUT: readonly variable
# unset TMOUT
-bash: unset: TMOUT: cannot unset: readonly variable
# su
# export TMOUT=10
# unset TMOUT
#