Нет вывода некоторых разбитых на страницы команд (man, git log)

Что-то пошло не так с обоими man а также git log команды в моей системе Ubuntu в праздничные дни. Ни один из них не производит никакого вывода, и я не имею ни малейшего представления о том, в чем заключается проблема, за исключением того, что они оба должны генерировать постраничные команды. Пример ниже.

Некоторые моменты

  • Вчера вечером я обновился с Ubuntu 17.04 до 17.10, но это ничего не изменило.
  • less а также more работает нормально, как и все остальное, что я подумал попробовать, включая остальные команды git.
  • Проблема сохраняется на обоих bash а также sh,

Любая помощь с благодарностью!

>>> echo Hello world > Foo.txt

>>> git init
Initialised empty Git repository in /home/eoin/GitHub/Fake/.git/

>>> git add Foo.txt 

>>> git commit -m "Init"
[master (root-commit) 9e53556] Init
 1 file changed, 1 insertion(+)
 create mode 100644 Foo.txt

>>> git log

>>> git status
On branch master
nothing to commit, working tree clean

>>> ls
Foo.txt

>>> man
What manual page do you want?

>>> man --version
man 2.7.6.1

>>> man man

>>> man git

>>> man ls

>>> which man
/usr/bin/man

>>> which git
/usr/bin/git

>>> which less
/usr/bin/less

>>> which more
/bin/more

Обновления

(С благодарностью всем, кто прокомментировал)

  • Переустановка git или же man не работает
  • $MANPAGER не установлен в новом терминале.
    • Бег MANPAGER=/usr/bin/less man man вызывает страницу руководства, как и ожидалось. Большой!
    • MANPAGER=/usr/bin/less git log ничего не делает
    • man man сам по себе ничего не делает после запуска, хотя $MANPAGER был установлен в этом терминале. Я думаю, мне нужно сделать MANPAGER каким-то образом постоянным, но пока не знаю как. Хороший прогресс, хотя.
  • sudo update-alternatives --config pager вызывает следующие варианты

    There are 3 choices for the alternative pager (providing /usr/bin/pager).
    
      Selection    Path            Priority   Status
    ------------------------------------------------------------
    * 0            /bin/less        77        auto mode
      1            /bin/less        77        manual mode
      2            /bin/more        50        manual mode
      3            /usr/bin/w3m     25        manual mode
    

    но я их всех перепробовал и man man до сих пор ничего не делает.

  • less а также more нормально работает нормально.

  • less а также pager кажется разумным, насколько я могу судить

    >>> ls -l /usr/bin/less
    lrwxrwxrwx 1 root root 9 Jul 18  2016 /usr/bin/less -> /bin/less
    
    >>> eoin@eoin-SATELLITE-S50-B:~/GitHub/Fake$ ls -l /bin/less
    -rwxr-xr-x 1 root root 170728 Mar 24  2017 /bin/less
    
    >>> file /usr/bin/pager
    /usr/bin/pager: symbolic link to /etc/alternatives/pager
    
    >>> file /etc/alternatives/pager
    /etc/alternatives/pager: symbolic link to /bin/less
    
  • man man | cat печатает справочную страницу!

    • man man | less работает также
    • так же как и git log | less,
    • Это разумный обходной путь, но я все еще не знаю, в чем проблема на самом деле.

Много позже обновлений

Я только что столкнулся с той же проблемой снова, на моем рабочем ноутбуке под управлением Ubuntu 16.04. В основном я использую этот компьютер для научных вычислений на python и R, так что в этом наборе программ, вероятно, есть что-то, что вызывает эту проблему. Решение ниже все еще исправляет это.

1 ответ

Решение

Кажется, что ваша альтернативная система сломана. Вы должны быть в состоянии обновить ссылки на альтернативы:

sudo update-alternatives --auto pager

После этого выберите ваш любимый пейджер с помощью:

sudo update-alternatives --config pager

Если это не помогает, вы можете установить, например,

export PAGER=/usr/bin/less

и оба man а также git log следует уважать и использовать это (в то время как MANPAGER используется man только, как вы уже обнаружили).

Краткий краткий курс по установке переменных:

  • установить переменную только для одной команды, например:

    PAGER=/usr/bin/less man man
    
  • установить переменную для текущего терминала, например:

    export PAGER=/usr/bin/less
    
  • установить переменную для каждого нового терминала (хотя вы можете получить файл с помощью . ~/.bashrc в любом существующем терминале), например:

    PAGER=/usr/bin/less
    
Другие вопросы по тегам