Cela ressemble à un bogue dans Bash: man builtins
l'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-bash
liste 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.h
pour changer cela (devrait être la ligne 32)
#define CD_COMPLAINS
pour ça
/* #define CD_COMPLAINS */
Modifiez debian/changelog
et 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 +foo
au numéro de version actuel ( foo
peut ê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 ( artful
ici). Enfin, exécutez dpkg-source --commit
.
Vous pouvez ensuite exécuter la debuild
commande, et si tout se passe bien (les erreurs debsign
peuvent être ignorées), vous devriez avoir des .deb
s 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 bash
pour 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 .)
cd
deux emplacements, et attendez-vous à ce qu'il trouve celui que vous voulez.