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

前端之家收集整理的这篇文章主要介绍了linux – 提示自定义:如何检测何时没有tty前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个带颜色的自定义提示符(使用tput),每次我在服务器中启动非交互式会话时,都会出现一堆错误.
例如,如果我开始这样的非交互式会话:
  1. ssh root@hostname6 "echo 'hello' ; echo $TERM"

我得到的输出是:

  1. hello
  2. xterm
  3. tput: No value for $TERM and no -T specified
  4. tput: No value for $TERM and no -T specified
  5. tput: No value for $TERM and no -T specified
  6. tput: No value for $TERM and no -T specified
  7. tput: No value for $TERM and no -T specified
  8. tput: No value for $TERM and no -T specified
  9. tput: No value for $TERM and no -T specified
  10. stdin: is not a tty

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

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

解决方法

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

猜你在找的Linux相关文章