Почему GNU `less` просто отображает вывод моего сценария заголовка вместо содержимого файла?
Я использую csh в качестве терминала и у меня есть скрипт, который запускается при смене каталогов, который заменяет заголовок окна текущим каталогом. У меня он изначально запускается в моем файле .cshrc, так что он изменит заголовок окна в новой оболочке.
Когда я использую less
чтобы просмотреть текстовый файл в консоли, вместо содержимого файла я увижу вывод этого скрипта. Это эффективно делает less
бесполезный.
2 ответа
Ваша проблема вызвана тем, что ~/.cshrc
выводить файлы на консоль, которые мешают работе less
,
Одним из способов решения этой проблемы является проверка наличия интерактивных оболочек, прежде чем делать что-либо, что влияет на консоль или изменяет способ запуска сценариев оболочки (например, установка псевдонимов для cd
).
if ($?prompt) then
# Do things that affect interactive shells here
endif
В соответствии с этим FAQ для Less на домашней странице разработчика, оказывается, что наличие всего, что генерирует вывод на консоль (что делает мой скрипт заголовка окна) в .cshrc
файл может мешать выводу less
, По-видимому less
вызывает оболочку для открытия и просмотра файлов, и поскольку любой новый экземпляр оболочки будет автоматически выполнять команды в .cshrc
любой вывод консоли на этом шаге будет мешать работе инструмента.
Решение состоит в том, чтобы удалить вызов моего скрипта из .cshrc
файл. Я могу положить это в .login
файл, но есть предостережение, что любой новый вызов оболочки не будет повторно выполнять команды в этом файле.