Cela ressemble à un bug dans Bash : per 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 page bug-bash
liste de diffusion ; plus de détails これ .
En fait, le bogue a été signalé (il y a longtemps). Si vous voulez un Bash corrigé maintenant, c'est maintenant, maintenant Voici comment le faire correctement (testé sur la version 17.10, devrait fonctionner sur d'autres).
Créez d'abord un répertoire dans lequel vous pourrez travailler, par exemple :
mkdir ~/bash
cd ~/bash
Obtenir le paquet source et les dépendances de construction :
apt-get source bash
sudo apt-get build-dep bash
cd bash-4.4
Modifier config-top.h
pour changer ceci (devrait être la ligne 32)
#define CD_COMPLAINS
à ce
/* #define CD_COMPLAINS */
Modifier debian/changelog
et ajoutez une entrée comme celle-ci en haut (vous pouvez aussi 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
zum actuel numéro de version ( foo
peut être n'importe quelle chaîne de lettres minuscules ; et faites attention si vous utilisez dch -i
il incrémentera le dernier numéro, vous devez donc revenir au numéro actuel) et d'utiliser le nom de version correct ( artful
ici). Enfin, exécutez dpkg-source --commit
.
Vous pouvez alors exécuter le debuild
et si tout se passe bien (erreurs de debsign
peuvent être ignorées), vous devriez avoir .deb
s dans le répertoire parent, que vous pouvez installer comme d'habitude (il n'est pas nécessaire de tous les installer, juste ceux que vous avez maintenant ; utilisez la commande dpkg -l | grep bash
pour le savoir).
Notez que le numéro de version du nouveau paquet est défini de telle sorte que vous recevrez automatiquement toute mise à jour future de 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 été publiée pour la première fois sur cette question en double .)