$ bash --version
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
Normalmente uso a versão bash acima em uma máquina Ubuntu 16.04 via terminal MATE. Atualmente, porém, estou usando o Terminal.app do macOS 10.14.6 para fazer SSH nessa máquina. O .bash_profile
para o meu usuário source
é apenas .bashrc
para que não haja diferenças de configuração além dos emuladores de terminal.
Eu tenho variáveis de ambiente que uso para abreviar caminhos de diretório longos, porém usados com frequência, definidos em meu .bashrc, algo como:
export FOO=~/foo/bar/baz
export BAR=~/foo/bar/baz/qux/foobar
Tenho o hábito de usar o preenchimento de tabulação (quero dizer, digitar parte do nome e pressionar a tecla tab) em subdiretórios dessas variáveis, para poder digitar:
cd $FOO/mi<TAB>
e pegue:
cd $FOO/misc/
Este é o comportamento no terminal MATE com o qual estou acostumado e gosto. Mas usar Terminal.app para SSH na mesma máquina, expande irritantemente a variável:
cd /home/andrea/foo/bar/baz/misc/
Não sei por que isso acontece, mas suspeito que Terminal.app envie uma sequência de escape diferente. Se eu digitar <ESC><TAB>
Terminal.app em vez de <TAB>
, obtenho o comportamento familiar e desejado (sem expansão da variável de ambiente). Infelizmente, não parece a sequência de escape do Terminal.apppara TABé configurável.
Então, quero saber se posso forçar o bash a sempre usar o comportamento que desejo.
Nas respostas abash: o nome da variável não está sendo expandido com o preenchimento da guia(onde alguém tem oopostoproblema para mim, eles querem ter o comportamento que eunãoquero), eu vi shopt -s direxpand
. Então tentei o inverso shopt -u direxpand
e não ajudou. Emhttps://stackoverflow.com/questions/6418493/bash-variable-expansion-on-tab-completeEu também vi shopt -s cdable_vars
, mas também shopt -u cdable_vars
não ajudei.
Eu estou perdido. :(