我设置.bashrc
为如果终端宽度至少为 80 个字符,则显示长提示。否则,它会显示降级的、较小的提示。
我使用一个if
声明来实现这一点:
dp_smaller_than=80
if [ $COLUMNS -lt $dp_smaller_than ]
then
PROMPT_COMMAND="degr_prompt"
else
PROMPT_COMMAND="full_prompt"
fi
只有当我在此语句之前放置一个或其他命令时,它才能正常工作sleep 0
,否则会显示以下错误:
[: -lt: unary operator expected
笔记:我在文件开头定义了degr_prompt
和函数。full_prompt
答案1
COLUMNS
变量由 bash 设置upon receipt of a SIGWINCH.
(参见Shell Variables
中的部分man bash
)。它未在您的脚本中设置,因为这不是环境变量。看看你自己:
$ export COLUMNS=$COLUMNS
$ ./your-script.sh
现在可以了。您需要检索COLUMNS
脚本中的值。您可以使用tput
例如:
$ tput cols
186
答案2
COLUMNS
未以某种方式设置在.bashrc
.
只需通过如下方式获取列tput cols
:
dp_smaller_than=80
if [ $(tput cols) -lt $dp_smaller_than ]
then
PROMPT_COMMAND="degr_prompt"
else
PROMPT_COMMAND="full_prompt"
fi