Isso parece um bug no Bash: por man builtins
, o comportamento antigo é o correto.
cd [-L|[-P [-e]] [-@]] [dir]
Change the current directory to dir. if dir is not supplied,
the value of the HOME shell variable is the default. Any
additional arguments following dir are ignored.
Você pode relatar o erro na lista de discussão bug-bash
; mais detalhes aqui .
Na verdade, o bug foi relatado (há muito tempo). Se você quer um Bash fixo agora, agora, agora , aqui está como fazê-lo corretamente (testado em 17.10, deve funcionar em outros também).
Primeiro, crie um diretório para trabalhar, por exemplo:
mkdir ~/bash
cd ~/bash
Obtenha o pacote de origem e as dependências de construção:
apt-get source bash
sudo apt-get build-dep bash
cd bash-4.4
Edite config-top.h
para mudar isso (deve ser a linha 32)
#define CD_COMPLAINS
para isso
/* #define CD_COMPLAINS */
Edite debian/changelog
e adicione uma entrada como esta no topo (você também pode usar o comando dch -i
):
bash (4.4-5ubuntu1+cd) artful; urgency=medium
* Fix cd.
-- Firas Kraiem <[email protected]> Thu, 04 Jan 2018 21:11:22 +0900
Os pontos mais importantes são acrescentar +foo
ao número da versão atual ( foo
pode ser qualquer sequência de letras minúsculas; e tenha cuidado se você usar dch -i
, irá incrementar o último número, então você precisa revertê-lo para o atual) e usar o nome de lançamento correto ( artful
aqui). Finalmente, execute dpkg-source --commit
.
Você pode então executar o comando debuild
, e se tudo correr bem (erros sobre debsign
podem ser ignorados) você deve ter alguns .deb
s no diretório pai, que você pode instalar como de costume (existe não é necessário instalar todos eles, apenas os que você tem agora; use dpkg -l | grep bash
para descobrir).
Observe que o número da versão do novo pacote está definido para que você obtenha automaticamente qualquer atualização futura para bash
; Se a atualização não corrigir o problema, você terá que repetir o processo acima.