Jos*_*ine 11 bash environment-variables timeout readonly
我们这里有一个只读的 Bash 变量。我不允许取消设置该变量。
$ echo $TMOUT
1800
Run Code Online (Sandbox Code Playgroud)
作为一种解决方法,我写了这些行(我的会话不会退出)
#!/usr/bin/perl
$|++;
while (1) { print "\e[0n"; sleep 120; }
Run Code Online (Sandbox Code Playgroud)
CentOS7/RHEL7 存储库中是否有类似(如上面的 Perl 代码)的官方软件包 (rpm)?我不喜欢打开vim编辑器,我想要一个命令。
ste*_*eve 15
将此添加到 .bash_profile 的开头?
if [ ! -z "$TMOUT" ]; then
env -i bash --init-file ~/.bash_profile
fi
Run Code Online (Sandbox Code Playgroud)
如果您因为违反超时规则而让无数旧会话继续运行,请当心系统管理员的愤怒。
您可以从命令行发出 perl 命令...
perl -e '$|++; while (1) { print "\e[0n"; sleep 120; }'
或者你可以在 shell (a sh
/ bash
example) 中做同样的事情:
while sleep 120; do printf '\33[0n'; done
或者你可以使用watch
:
watch -n 120 printf '\33[0n'
小智 5
事情是这样的,
当会话变量为“只读”时,您必须用“exec”命令替换当前的shell进程,
因此,您的问题的答案是:
$> exec env TMOUT=0 bash
Run Code Online (Sandbox Code Playgroud)
但我建议设置更高的超时值
$> exec env TMOUT=3600 bash
Run Code Online (Sandbox Code Playgroud)