加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 提示自定义:如何检测何时没有tty

发布时间:2020-12-13 16:50:43 所属栏目:Linux 来源:网络整理
导读:我有一个带颜色的自定义提示符(使用tput),每次我在服务器中启动非交互式会话时,都会出现一堆错误. 例如,如果我开始这样的非交互式会话: ssh root@hostname6 "echo 'hello' ; echo $TERM" 我得到的输出是: helloxtermtput: No value for $TERM and no -T sp
我有一个带颜色的自定义提示符(使用tput),每次我在服务器中启动非交互式会话时,都会出现一堆错误.
例如,如果我开始这样的非交互式会话:
ssh root@hostname6 "echo 'hello' ; echo $TERM"

我得到的输出是:

hello
xterm
tput: No value for $TERM and no -T specified
tput: No value for $TERM and no -T specified
tput: No value for $TERM and no -T specified
tput: No value for $TERM and no -T specified
tput: No value for $TERM and no -T specified
tput: No value for $TERM and no -T specified
tput: No value for $TERM and no -T specified
stdin: is not a tty

因此,即使会话是非交互式的,$TERM变量也具有值.

我需要检测什么条件才能启动非交互式shell时省略提示自定义部分?

解决方法

在对PS1进行分配时评估tput命令.由于在启动ssh会话时处理启动文件,因此即使会话不是交互式的,也会进行分配.您可以测试它,只在实际开始交互式会话时进行分配.
if [[ $- =~ i ]]
then
    # set PS1 using tput
else
    # set a plain PS1 (or use hard-coded escape sequences)
fi

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读