答案1
我安装了 fish (1.23.1) 来调查这个问题。结果发现,只有当$TERM
满足以下条件之一时,fish 才会更新标题:xterm
、screen
、nxterm
、rxvt
。否则,它永远不会调用该fish_title
函数。
Terminal 的默认值是xterm-256color
,而在 Mac OS X Lion 10.7 之前是xterm-color
,fish 都无法识别这两个值。Fish 对于它认为哪些 terminfo 值支持此功能过于保守。例如,fish_title
不要求任何变体。xterm*
要解决此鱼类限制,您可以设置$TERM
为xterm
。最简单的方法是使用终端首选项设置:
终端 > 首选项 > 设置 > [配置文件] > 高级 > 将终端声明为
从弹出菜单中选择xterm
。此首选项控制的值$TERM
(这就是它的全部功能)。
请注意,使用而不是终端的默认设置可能会禁用某些终端功能,或者在 Lion 之前,由于terminfo 描述和旧版本的终端xterm
之间不兼容而导致不当行为。xterm
因此,如果 fish 不是您的默认 shell,您可能只想$TERM
在调用 fish 时进行更改。例如,您可以TERM=xterm fish
从 shell 调用 fish,或者您可以创建一个自定义终端设置配置文件以仅用于运行 fish(您可以设置“运行命令”首选项来调用 fish,因此使用此配置文件创建一个新的终端窗口或选项卡将自动运行 fish)。
或者,如果您不介意修改 fish:一旦您通过 MacPorts 或 Fink 安装它,您的机器上就有了源代码,您可以扩展其可识别的 $TERM 值列表,甚至可以更新代码以允许在可识别的值上添加后缀。例如,它至少应该允许任何以xterm
或开头的值screen
。否则,它甚至无法与常见screen
变体一起使用。如果您这样做了,请将其贡献回 fish 项目。
答案2
如果你发现这个问题想知道如何更改 fish 中的窗口/选项卡标题,并且该fish_title
功能适合你(请参阅Chris Page 的回答),那么这里有一个示例,将标题设置为使用工作目录的缩短版本。
$ funced fish_title
function fish_title
if [ $_ = 'fish' ]
echo (prompt_pwd)
else
echo $_
end
end
$ funcsave fish_title
答案3
这可能与 的配置有关Terminal.app
。我在 Leopard 上运行 Terminal 2.0.2,它允许我通过首选项配置窗口的标题(参见设置 -> 窗口)。
启用“shell 命令名称”可能会得到您想要的结果。默认设置只是显示,Terminal - $process - $size
这可能会覆盖 fish 环境。