我希望变量NUSERS='who | wc -l'
每2秒更新一次,以便在PS1='\u@\h-${NUSERS}:\w $'
文件中定义.bashrc
的提示中显示已连接用户的数量。
我在watch NUSERS='who | wc -l' &>/dev/null &
中尝试了.bashrc
...它无效
我在while true; do NUSERS='who | wc -l' && sleep 2; done &
中尝试了.bashrc
...它既不起作用
我不明白为什么这不起作用。我想避免屏幕和nohup,因为我不想在退出ssh会话时运行该命令。
答案 0 :(得分:3)
父shell在其子节点中看不到变量更新。
由于您的目的是更新不是每两秒,而是每次显示新提示,您可以使用PROMPT_COMMAND
变量此
根据参考手册,关于PROMPT_COMMAND
变量:
如果设置,则该值将被解释为在打印每个主要提示(
$PS1
)之前执行的命令。
正是你需要的!
将其放入.bashrc
文件中:
PROMPT_COMMAND='NUSERS=$(wc -l < <(who))'
PS1='\u@\h-$NUSERS:\w $'
你会很好。
答案 1 :(得分:1)
实际上,可以直接在PS1
文件的.bashrc
变量声明中插入命令
PS1='\u@\h-`who | wc -l`:\w $'