Почему 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 файл, но есть предостережение, что любой новый вызов оболочки не будет повторно выполнять команды в этом файле.