我有一个简单的命令来设置术语标题:
# Allow the user to set the title.
function title {
PROMPT_COMMAND="echo -ne \"\033]0;$1 ($PWD)\007\""
}
export -f title
我想从脚本访问它:
16:28 $ cat ./scripts/webserver.sh
#!/bin/bash
title 'webserver'
nodemon ./app/webserver.coffee
我已经放入了title
,.bashrc
然后.bash_profile
获取.profile
了所有这些文件。我可以title
从命令行正常运行该函数。无论我做什么,运行脚本文件时 title 函数都不会运行。没有错误,只是标题没有变化。我做错了什么?
更多信息:我echo 'changing title'
在标题函数中添加了一行。输出了回显,但标题没有改变。那么标题函数肯定有问题吗?
答案1
如果您需要更改终端的标题,我建议您使用wmctrl
也可以在脚本内使用的标题(事实上,您的解决方案失败了,因为运行脚本时不使用提示符)。因此,首先安装软件包wmctrl
,例如使用 apt:
sudo apt-get install wmctrl
其优点bash
是它有一个名为的变量WINDOWID
,其中包含一个可以使用的窗口 ID(不是开玩笑!)wmctrl
。在 Bash 或脚本中,尝试:
wmctrl -ir $WINDOWID -N "A cool title"
- 该
-i
选项用于告知wmctrl
窗口将使用其数字 ID 来指定(echo $WINDOWID
检查这WINDOWID
确实是一个数字,并wmctrl -l
列出您的窗口管理器管理的所有窗口并进行比较...您可能必须从十进制转换为十六进制或可能使用printf '%#.8x\n' "$WINDOWID"
)。 - 该
-r
选项用于告知wmctrl
指定窗口将准备好执行下列操作,即将-N
其标题更改为指定标题。
man wmctrl
了解有关这个有趣的小工具的更多信息。
享受!