Por que o bash não armazena comandos que começam com espaços?


48

Se eu executar uma sequência de comandos como:

$ ls
$ grep abc file.txt

e depois use a tecla de seta para cima para obter a anterior, o terminal mostrará o último cmd (que é o grepaqui)

Mas se eu fizer algo assim:

$ ls
$   grep abc file.txt

onde grepé precedido por espaços, pressionar para cima dá ls, não grep.

Por que é isso?


Respostas:


52
echo $HISTCONTROL
ignoreboth

festança do homem:

HISTCONTROL

Uma lista de valores separados por dois pontos que controla como os comandos são salvos na lista de histórico. Se a lista de valores incluir ignorespace, as linhas que começam com um caractere de espaço não são salvas na lista de histórico. Um valor de ignoredupsfaz com que as linhas correspondentes à entrada do histórico anterior não sejam salvas. Um valor de ignorebothé uma abreviação de ignorespacee ignoredups.


3
e HISTCONTROLé definido como ignorebotho padrão ~/.bashrcfornecido por debianpelo menos.
Stéphane Chazelas

1
Qual é o caso de uso ignorespace?
Ciro Santilli escreveu

1
No Ubuntu 14.04, o padrão é o ignorebothque é meio irritante.
Nick Gammon

6
Ciro, presumo que seja para que você possa digitar um comando como esse echo "drop database mydb" | mysql -u root -pPassworde não salvá-lo no histórico.
Jeremy

2
Para usuários de mac, o HISTCONTROL não está definido para nada, então você precisará adicioná-lo ao seu perfil de bash ou similar - unix.stackexchange.com/questions/115917/…
chrismarx
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.