Điều này trông giống như một lỗi trong Bash: theo man builtinshành vi cũ là hành vi đúng.
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.
Bạn có thể báo cáo lỗi trong bug-bashdanh sách gửi thư; biết thêm chi tiết tại đây .
Trên thực tế, lỗi đã được báo cáo (từ lâu). Nếu bạn muốn một Bash cố định ngay bây giờ, bây giờ, bây giờ , đây là cách thực hiện đúng (được thử nghiệm vào ngày 17.10, cũng nên hoạt động trên những người khác).
Đầu tiên tạo một thư mục để làm việc, ví dụ:
mkdir ~/bash
cd ~/bash
Nhận gói nguồn và các phụ thuộc xây dựng:
apt-get source bash
sudo apt-get build-dep bash
cd bash-4.4
Chỉnh sửa config-top.hđể thay đổi điều này (nên là dòng 32)
#define CD_COMPLAINS
đến đây
/* #define CD_COMPLAINS */
Chỉnh sửa debian/changelogvà thêm một mục như thế này ở trên cùng (bạn cũng có thể sử dụng lệnh 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
Những điểm quan trọng nhất là để phụ thêm +foocho hiện số phiên bản ( foocó thể là bất kỳ chuỗi các chữ thường, và hãy cẩn thận nếu bạn sử dụng dch -i, nó sẽ tăng số cuối cùng, vì vậy bạn cần để trở lại nó vào một hiện hành) và sử dụng tên phát hành chính xác ( artfulở đây). Cuối cùng, chạy dpkg-source --commit.
Sau đó, bạn có thể chạy debuildlệnh và nếu mọi thứ đều ổn (lỗi về debsigncó thể bỏ qua), bạn nên có một số .debs trong thư mục cha, bạn có thể cài đặt như bình thường (không cần phải cài đặt tất cả, chỉ cần bạn cài đặt chúng có ngay bây giờ, sử dụng dpkg -l | grep bashđể tìm hiểu).
Lưu ý rằng số phiên bản của gói mới được đặt để bạn sẽ tự động nhận được bất kỳ bản cập nhật nào trong tương lai bash; nếu bản cập nhật không khắc phục được sự cố, bạn phải lặp lại quy trình trên.
(Câu trả lời này lần đầu tiên được đăng trên câu hỏi trùng lặp này .)
cdhai địa điểm, và bằng cách nào đó mong đợi nó sẽ tìm ra vị trí bạn muốn.