为什么终端中的文件夹图标带有问号?


16

有时,我发现终端窗口之一的标题栏中的文件夹图标上面有一个问号,例如:

在此处输入图片说明

这是什么意思?它似乎没有任何作用或我注意到的问题-我很好奇。

我正在使用OS X 10.8(Mountain Lion)。

Answers:


18

问号(和禁用的弹出菜单项)表示终端认为工作目录位于远程计算机上,因此您无法使用弹出菜单在Finder中导航到该目录。如果您查看弹出菜单中的最后一项(按住Command键并单击“代理”图标),您将看到Terminal认为工作目录已打开的计算机/主机。您应该发现它不是计算机的当前名称。

如果您使用的是bash(macOS上的默认外壳),则默认情况下,它将在每个提示符下向终端发送一个控制序列,以告知终端当前的工作目录。由于控制序列可以来自本地或远程计算机,因此它发送包括主机名的“ file:”方案URL,并且Terminal验证该名称是否映射到当前计算机。如果不是,Terminal将禁用路径弹出菜单项,因为它们与本地目录不对应。

您可以看到在/etc/bashrc_Apple_Terminal(或/etc/bashrc在旧版本的macOS上)发送控制序列的代码。

[请注意,如果您不使用bash或对其进行了自定义,则不会发生默认行为,但是您的shell(或您正在运行的其他程序)正在发送控制序列以设置窗口或标签(图标)标题,终端将检查它是否包含看起来像路径名的内容,然后检查它是否对应于有效的本地路径名。如果不是,则根本不显示窗口代理图标。]

如果您在运行Shell时更改了网络配置,则终端可能无法识别“文件:” URL在当前主机上的情况是这样的。一种常见的情况是使便携式计算机进入睡眠状态并移动到另一个位置,然后将其唤醒。本地主机名和地址将有改变,但外壳的$HOSTNAME环境变量仍然有旧的主机名,这就是它在控制顺序发送。要解决此问题,请使用以下命令更新环境变量:

 HOSTNAME=$(hostname)

另一种情况是退出终端,更改网络配置,然后打开启用了恢复的终端。终端将还原窗口和选项卡,以及每个窗口和选项卡发送的最后一个工作目录URL。如果遇到这种情况,$HOSTNAME它将是最新的-因为它启动了一个新的外壳程序-但Terminal仍然可以拥有一个过时的URL,直到您使外壳程序再次对其进行更新为止。如果显示命令提示符不能解决问题,请尝试使用更改目录,cd以使Shell对其进行更新。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.