To wygląda jak błąd w Bash: według man builtinsstarego zachowanie jest prawidłowe.
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.
Możesz zgłosić błąd na bug-bashliście mailingowej; więcej szczegółów tutaj .
Faktycznie błąd został zgłoszony (dawno temu). Jeśli chcesz teraz naprawić Bash, teraz, teraz , jak to zrobić poprawnie (testowane 17.10, powinno działać również na innych).
Najpierw utwórz katalog do pracy, na przykład:
mkdir ~/bash
cd ~/bash
Pobierz pakiet źródłowy i zależności kompilacji:
apt-get source bash
sudo apt-get build-dep bash
cd bash-4.4
Edytuj, config-top.haby to zmienić (powinna być linia 32)
#define CD_COMPLAINS
do tego
/* #define CD_COMPLAINS */
Edytuj debian/changelogi dodaj taki wpis u góry (możesz także użyć polecenia 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
Najważniejsze punkty to dołączenie +foodo bieżącego numeru wersji ( foomoże to być dowolny ciąg małych liter; i uważaj, jeśli go użyjesz dch -i, zwiększy on ostatni numer, więc musisz przywrócić go do obecnego) i użyć poprawna nazwa wydania ( artfultutaj). Wreszcie biegnij dpkg-source --commit.
Następnie możesz uruchomić debuildpolecenie, a jeśli wszystko pójdzie dobrze (błędy debsignmożna zignorować), powinieneś mieć trochę .debs w katalogu nadrzędnym, który możesz zainstalować jak zwykle (nie ma potrzeby instalowania wszystkich, tylko tych już teraz; użyj, dpkg -l | grep bashaby się dowiedzieć).
Zauważ, że numer wersji nowego pakietu jest ustawiony tak, że będziesz automatycznie otrzymywać wszelkie przyszłe aktualizacje do bash; jeśli aktualizacja nie rozwiąże problemu, musisz powtórzyć powyższy proces.
(Ta odpowiedź została po raz pierwszy opublikowana na to zduplikowane pytanie ).
cddwie lokalizacje i w jakiś sposób oczekujesz, że zdecyduje, którą z nich chcesz.