Histórico de terminal no preenchimento automático

1

Estou executando o Ubuntu 12.04 LTS e, por algum motivo, não há histórico de terminal (pressionando a seta para cima para o comando anterior), nem o preenchimento automático (pressionando a tecla tab). Esses recursos maravilhosos sempre funcionaram em qualquer máquina UNIX que usei no passado. Eu olhei para o menu de atalhos de teclado para o terminal e não vi nada lá.

  1. Como posso obter a seta para cima para me fornecer o comando de terminal anterior?
  2. Como posso obter a tecla tab para executar o preenchimento automático?

Obrigado antecipadamente!

EDIT: Tenho certeza de que estou usando bash , echo $SHELL returns /bin/sh . Eu estou correndo isso na minha caixa local. Não sei como executar o histórico, mas quando eu faço ls -a não estou vendo o arquivo de histórico usual (eu acho que é chamado .history?)

    
por CodeKingPlusPlus 22.09.2013 / 19:17

1 resposta

3

Você não está usando bash , está usando sh . O que isso significa depende do seu sistema, no Debian e no Ubuntu , /bin/sh é um link simbólico para dash , então esse é o seu padrão shell é. dash não tem a funcionalidade desejada, você precisa alternar para outro shell como bash ou zsh . Você pode fazer isso com o comando chsh :

$ chsh
Password: 
 Changing the login shell for terdon
 Enter the new value, or press ENTER for the default
  Login Shell [/bin/sh]: /bin/bash

Agora, cada novo terminal que você abrir estará executando bash e a seta para cima deverá fornecer o histórico.

Mesmo em sistemas em que sh é um link para bash , os dois não são equivalentes. Conforme explicado em man bash :

   If  bash  is  invoked  with  the name sh, it tries to mimic the startup
   behavior of historical versions of sh as  closely  as  possible,  while
   conforming  to the POSIX standard as well.  When invoked as an interac‐
   tive login shell, or a non-interactive shell with the  --login  option,
   it  first  attempts  to read and execute commands from /etc/profile and
   ~/.profile, in that order.  The  --noprofile  option  may  be  used  to
   inhibit  this  behavior.  When invoked as an interactive shell with the
   name sh, bash looks for the variable ENV, expands its value  if  it  is
   defined,  and uses the expanded value as the name of a file to read and
   execute.  Since a shell invoked as sh does not attempt to read and exe‐
   cute  commands from any other startup files, the --rcfile option has no
   effect.  A non-interactive shell invoked with  the  name  sh  does  not
   attempt  to  read  any  other  startup files.  When invoked as sh, bash
   enters posix mode after the startup files are read.
    
por 18.01.2014 / 19:25