web-dev-qa-db-fra.com

Aucune sortie de certaines commandes paginées (man, git log)

Quelque chose a mal tourné avec les commandes man et git log de mon système Ubuntu pendant les vacances. Ni produire aucune sortie, et je n'ai aucune idée de ce que le problème est, sauf qu'ils devraient tous deux produire des commandes paginées. Un exemple est ci-dessous.

Des points

  • Je suis passé d'Ubuntu 17.04 à 17h10 la nuit dernière, mais cela n'a rien changé.
  • less et more fonctionnent bien, comme tout ce que j'ai pensé essayer, y compris le reste des commandes git.
  • Le problème persiste à la fois sur bash et sh.

Toute aide est grandement appréciée!

>>> 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

Mises à jour

(Merci à tous ceux qui ont commenté)

  • La réinstallation de git ou man ne fonctionne pas.
  • $MANPAGER n'est pas défini dans un nouveau terminal.
    • Lancer MANPAGER=/usr/bin/less man man affiche la page de manuel comme prévu. Génial!
    • MANPAGER=/usr/bin/less git log ne fait rien.
    • man man ne fait toujours rien après avoir exécuté cette opération, même si $MANPAGER a été défini dans ce terminal. Je suppose que je dois rendre MANPAGER permanente, mais je ne sais pas comment pour le moment. Bon progrès cependant.
  • Sudo update-alternatives --config pager ouvre les options suivantes

    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
    

    mais je les ai tous essayés, et man man ne fait toujours rien.

  • less et more fonctionnent normalement.

  • less et pager semblent sensés, autant que je sache

    >>> 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 imprime la page de manuel!

    • man man | less fonctionne aussi
    • comme le fait git log | less.
    • C'est une solution de contournement raisonnable, mais je ne suis toujours pas au courant de la nature du problème.

Mise à jour beaucoup plus tard

Je viens juste de rencontrer à nouveau le même problème, sur mon ordinateur portable de travail, sous Ubuntu 16.04. J'utilise principalement cet ordinateur pour l'informatique scientifique en python et R; il y a donc probablement quelque chose dans cet ensemble de programmes qui cause ce problème. La solution ci-dessous le corrige toujours.

4
Eoin

Il semble que votre système alternatif soit en panne. Vous devriez pouvoir mettre à jour les liens alternatifs avec:

Sudo update-alternatives --auto pager

Après cela, choisissez votre téléavertisseur préféré avec:

Sudo update-alternatives --config pager

Si cela ne vous convient pas, vous pouvez définir, par exemple,.

export PAGER=/usr/bin/less

et man et git log doivent respecter et utiliser cela (alors que MANPAGER est utilisé par man uniquement, comme vous l'avez déjà découvert).

Un bref cours intensif sur la définition des variables:

  • définir une variable pour une seule commande, par exemple:

    PAGER=/usr/bin/less man man
    
  • définir une variable pour le terminal actuel, par exemple:

    export PAGER=/usr/bin/less
    
  • définir une variable pour chaque nouveau terminal (bien que vous puissiez également alimenter le fichier avec . ~/.bashrc dans tout terminal existant), par exemple:

    PAGER=/usr/bin/less
    
3
dessert