Sistem Anda (seperti banyak sistem Unix) tidak memiliki cd
eksternal perintah (setidaknya tidak di jalur itu). Bahkan jika ada, ls
akan memberi Anda daftar direktori dari direktori asli. Perintah eksternal tidak pernah dapat mengubah direktori untuk proses pemanggilan (shell Anda).
Hapus alias dari lingkungan dengan unalias cd
(dan juga hapus definisinya dari file inisialisasi shell yang mungkin telah Anda tambahkan).
Dengan fungsi shell, Anda bisa membuatnya berfungsi sebagai cd
biasanya begitu, dengan doa tambahan ls
di bagian akhir jika cd
berhasil:
cd () {
command cd "[email protected]" && ls -lah
}
atau,
cd () { command cd "[email protected]" && ls -lah; }
Ini akan memanggil cd
perintah yang dibangun ke dalam shell Anda dengan argumen baris perintah yang sama dengan yang Anda berikan pada fungsi tersebut. Jika perubahan direktori berhasil, ls
akan lari.
command
perintah menghentikan shell dari menjalankan fungsi secara rekursif.
Definisi fungsi (seperti yang tertulis di atas) akan masuk ke file startup shell Anda. Dengan bash
, ini mungkin ~/.bashrc
. Definisi fungsi kemudian akan aktif di sesi shell interaktif baru berikutnya . Jika Anda ingin aktif sekarang , lalu jalankan definisi fungsi apa adanya di prompt shell interaktif, yang akan mendefinisikannya dalam sesi interaktif Anda saat ini.
Pada sistem di mana cd
tersedia sebagai perintah eksternal, perintah ini juga tidak mengubah direktori untuk proses pemanggilan. Satu-satunya penggunaan nyata untuk perintah semacam itu adalah untuk memberikan kepatuhan POSIX dan untuk bertindak sebagai ujian apakah mengubah direktori ke direktori tertentu dapat dilakukan .
Saya bisa menyelesaikannya dengan menghapus alias lagi dengan unalias cd
Itu terjadi karena:
$ type cd
cd is a shell builtin