Provavelmente não. Ou, pelo menos, será realmente complexo. O problema aqui é que foo=
é interpretado pelo bash como uma tentativa de definir a variável foo
para algo. Então, quando você clicar na aba , ela tenta completar os nomes dos arquivos no diretório atual. Na verdade, ele não está completando foo=
, está iniciando um novo globo a partir do nada. Observe que são necessárias duas guias para concluir foo=
.
Para ilustrar, você pode ver o mesmo comportamento, mesmo que não haja arquivos que comecem com foo=
:
$ ls
bar baz
Digitar foo=
e pressionar a tecla Tab resulta em:
$ foo= ## first tab does nothing
$ foo=
bar baz ## both file names are printed.
Eu duvido que haja alguma maneira de contornar isso, já que esta é uma função básica do shell e a principal maneira de definir variáveis.
Eu posso pensar em duas soluções alternativas. Ou escape do =
:
$ ls foo\= ## hit tab
$ ls foo\=bar
Ou use aspas:
$ ls 'foo= ## hit tab
$ ls 'foo=bar' ## yes, the final quote is added by the shell.
Acionar a aba agora expandirá o nome do arquivo corretamente.