Почему значок папки в моем терминале имеет знак вопроса?

16

Время от времени я замечаю, что на значке папки в заголовке одного из окон моего терминала стоит вопросительный знак, например, такой:

введите описание изображения здесь

Что это значит? Кажется, это не имеет никакого эффекта или проблем, которые я заметил - мне просто любопытно.

Я использую OS X 10.8 (Mountain Lion).

Эндрю Ферье
источник

Ответы:

18

Знак вопроса (и отключенные элементы всплывающего меню) указывает, что терминал считает, что рабочий каталог находится на удаленном компьютере, и поэтому вы не можете перейти к нему в Finder с помощью всплывающего меню. Если вы посмотрите на последний пункт во всплывающем меню (Ctrl + клик на значке «прокси»), то увидите компьютер / хост, на котором терминал считает, что рабочий каталог включен. Вы должны обнаружить, что это не текущее имя компьютера.

Если вы используете bash (оболочка по умолчанию в macOS), по умолчанию он отправляет управляющую последовательность в терминал при каждом запросе, чтобы сообщить Терминалу текущий рабочий каталог. Поскольку управляющие последовательности могут поступать с локальных или удаленных компьютеров, он отправляет URL-адрес схемы «file:», включающий имя хоста, и Terminal проверяет, что имя отображается на текущий компьютер. Если это не так, Терминал отключает элементы всплывающего меню пути, потому что они не соответствуют локальным каталогам.

Вы можете увидеть код, который отправляет управляющую последовательность /etc/bashrc_Apple_Terminal(или /etc/bashrcв более старых версиях macOS).

[Обратите внимание, что если вы не используете bash или настроили его так, чтобы поведение по умолчанию не возникало, но ваша оболочка (или другая запущенная вами программа) отправляет управляющие последовательности для установки окна или вкладки ( icon) title, Терминал проверит его на предмет наличия того, что выглядит как имя пути, а затем проверит, соответствует ли это действительному локальному пути. Если нет, то он вообще не отображает значок прокси окна.]

Сценарий, в котором Терминал может не распознать, что URL-адрес «file:» находится на текущем хосте, - это если вы измените конфигурацию сети во время работы оболочки. Распространенным случаем является перевод портативного компьютера в спящий режим и его перемещение в другое место, а затем его пробуждение. Имя и адрес локального хоста будут изменены, но $HOSTNAMEпеременная окружения оболочки по- прежнему имеет старое имя хоста, и это то, что она отправляет в управляющей последовательности. Чтобы это исправить, обновите переменную среды:

 HOSTNAME=$(hostname)

В другом сценарии вы выходите из Терминала, меняете настройки сети, затем открываете Терминал с включенным Возобновлением. Терминал восстановит окна и вкладки вместе с последним URL рабочего каталога, который был отправлен каждому. Если вы $HOSTNAMEстолкнетесь с этим случаем, он будет в курсе - поскольку он запускает новую оболочку - но у Терминала все еще может быть устаревший URL, пока вы не получите оболочку для его обновления. Если отображение командной строки не решает проблему, попробуйте изменить каталоги с помощью, cdчтобы оболочка обновила ее.

Крис Пейдж
источник