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

Другие вопросы по тегам