Cela ressemble à un bogue dans Bash: man builtinsl'ancien comportement est le bon.
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.
Vous pouvez signaler le bogue sur la bug-bashliste de diffusion; plus de détails ici .
En fait, le bug a été signalé (il y a longtemps). Si vous voulez un Bash fixe maintenant, maintenant, maintenant , voici comment le faire correctement (testé le 17.10, devrait également fonctionner sur d'autres).
Créez d'abord un répertoire dans lequel travailler, par exemple:
mkdir ~/bash
cd ~/bash
Obtenez le package source et les dépendances de génération:
apt-get source bash
sudo apt-get build-dep bash
cd bash-4.4
Modifier config-top.hpour changer cela (devrait être la ligne 32)
#define CD_COMPLAINS
pour ça
/* #define CD_COMPLAINS */
Modifiez debian/changeloget ajoutez une entrée comme celle-ci en haut (vous pouvez également utiliser la commande dch -i):
bash (4.4-5ubuntu1+cd) artful; urgency=medium
* Fix cd.
-- Firas Kraiem <firas@fkraiem.org> Thu, 04 Jan 2018 21:11:22 +0900
Les points les plus importants sont d'ajouter +fooau numéro de version actuel ( foopeut être n'importe quelle chaîne de lettres minuscules; et soyez prudent si vous utilisez dch -i, il incrémentera le dernier numéro, vous devez donc le revenir à la version actuelle) et utiliser le nom correct de la version ( artfulici). Enfin, exécutez dpkg-source --commit.
Vous pouvez ensuite exécuter la debuildcommande, et si tout se passe bien (les erreurs debsignpeuvent être ignorées), vous devriez avoir des .debs dans le répertoire parent, que vous pouvez installer comme d'habitude (il n'est pas nécessaire de les installer tous, juste ceux que vous maintenant; utilisez dpkg -l | grep bashpour le savoir).
Notez que le numéro de version du nouveau package est défini de sorte que vous obtiendrez automatiquement toute future mise à jour vers bash; si la mise à jour ne résout pas le problème, vous devez répéter le processus ci-dessus.
(Cette réponse a d'abord été publiée sur cette question en double .)
cddeux emplacements, et attendez-vous à ce qu'il trouve celui que vous voulez.