Di bagian pertama seri ini, kita membahas cd - perintah secara rinci, dan di bagian kedua, kami melihat secara mendalam pushd dan munculkan perintah serta skenario yang berguna.
Melanjutkan diskusi kita tentang aspek navigasi baris perintah, dalam tutorial ini, kita akan membahas CDPATH variabel lingkungan melalui contoh yang mudah dipahami. Kami juga akan membahas beberapa detail lanjutan terkait variabel ini.
Namun sebelum kita melanjutkan, perlu disebutkan bahwa semua contoh dalam tutorial ini telah diuji di Ubuntu 14.04 dengan Bash versi 4.3.11(1).
Variabel lingkungan CDPATH
Meskipun pekerjaan baris perintah Anda melibatkan pelaksanaan semua operasi di bawah direktori tertentu - misalnya direktori beranda Anda - maka Anda juga harus memberikan jalur absolut saat berpindah direktori. Misalnya, pertimbangkan situasi di mana saya berada di /home/himanshu/Downloads direktori:
$ pwd
/home/himanshu/Downloads
Dan persyaratannya adalah beralih ke /home/himanshu/Desktop direktori. Untuk melakukan ini, biasanya, saya harus menjalankan:
cd /home/himanshu/Desktop/
atau
cd ~/Desktop/
atau
cd ../Desktop/
Bukankah mudah jika saya bisa menjalankan perintah berikut:
cd Desktop
Ya, itu mungkin. Dan di sinilah variabel lingkungan CDPATH masuk. Anda dapat menggunakan variabel ini untuk menentukan direktori dasar untuk cd perintah.
Jika Anda mencoba mencetak nilainya, Anda akan melihat bahwa variabel env ini secara default kosong:
$ echo $CDPATH
$
Sekarang, mengingat kasus yang telah kita diskusikan sejauh ini, mari kita gunakan variabel lingkungan ini untuk mendefinisikan /home/himanshu sebagai direktori dasar untuk perintah cd.
Cara termudah untuk melakukannya adalah:
export CDPATH=/home/himanshu
Dan sekarang, saya dapat melakukan apa yang sebelumnya tidak dapat saya lakukan - dari dalam /home/himanshu/Downloads direktori, jalankan cd Desktop perintah berhasil.
$ pwd
/home/himanshu/Downloads
$ cd Desktop/
/home/himanshu/Desktop
$
Ini berarti saya sekarang dapat melakukan cd ke direktori mana pun di bawah /home/himanshu tanpa secara eksplisit menentukan /home/himanshu atau ~ atau ../ (atau beberapa ../ ) dalam perintah cd.
Poin yang perlu diingat
Jadi sekarang Anda tahu bagaimana kami menggunakan variabel lingkungan CDPATH untuk beralih dengan mudah ke/dari /home/himanshu/Downloads dari/ke /home/himanshu/Desktop . Sekarang, pertimbangkan situasi di mana-/home/himanshu/Desktop direktori berisi subdirektori bernama Unduhan , dan ini adalah tempat terakhir yang Anda inginkan untuk beralih.
Tapi tiba-tiba Anda menyadari bahwa melakukan cd Desktop akan membawa Anda ke /home/himanshu/Desktop . Jadi, untuk memastikan hal itu tidak terjadi, lakukan:
cd ./Unduhan
Meskipun tidak ada masalah dalam perintah yang disebutkan di atas, itu merupakan upaya ekstra dari Anda (betapapun kecilnya), terutama mengingat Anda harus melakukan ini setiap kali situasi seperti itu muncul. Solusi yang lebih elegan untuk masalah ini adalah dengan menyetel variabel CDPATH dengan cara berikut:
ekspor CDPATH=".:/home/himanshu"
Ini berarti, Anda memberi tahu perintah cd untuk terlebih dahulu mencari direktori di direktori kerja saat ini, dan kemudian mencoba mencari /home/himanshu direktori. Tentu saja, apakah Anda ingin perintah cd berperilaku seperti ini atau tidak bergantung sepenuhnya pada preferensi atau kebutuhan Anda - ide saya di balik pembahasan poin ini adalah untuk memberi tahu Anda bahwa situasi seperti ini mungkin muncul.
Seperti yang akan Anda pahami sekarang, setelah variabel env CDPATH disetel, nilainya - atau set jalur yang dikandungnya - adalah satu-satunya tempat di sistem tempat perintah cd mencari direktori (kecuali tentu saja skenario di mana Anda menggunakan jalur absolut). Jadi, sepenuhnya terserah Anda untuk memastikan bahwa perilaku perintah tetap konsisten.
Selanjutnya, jika ada skrip bash yang menggunakan perintah cd dengan jalur relatif, maka lebih baik hapus atau hapus setel variabel lingkungan CDPATH terlebih dahulu, kecuali jika Anda setuju dengan masalah yang tidak terduga. Atau, daripada menggunakan ekspor perintah di terminal untuk menyetel CDPATH, Anda dapat menyetel variabel lingkungan di .bashrc
Anda file setelah pengujian untuk shell interaktif/non-interaktif untuk memastikan bahwa perubahan yang Anda coba lakukan hanya tercermin dalam shell interaktif.
Urutan jalur yang muncul dalam nilai variabel lingkungan juga penting. Misalnya, jika direktori saat ini terdaftar sebelum /home/himanshu , maka perintah cd pertama-tama akan mencari direktori di direktori kerja saat ini dan kemudian pindah ke /home/himanshu . Namun, jika nilainya "/home/himanshu:." maka pencarian pertama akan dilakukan di /home/himanshu dan setelah itu direktori saat ini. Tak perlu dikatakan, ini akan mempengaruhi apa yang dilakukan perintah cd, dan dapat menyebabkan masalah jika Anda tidak mengetahui urutan jalur.
Selalu ingat bahwa variabel lingkungan CDPATH, seperti namanya, hanya berfungsi untuk perintah cd. Artinya saat berada di dalam /home/himanshu/Downloads direktori, Anda dapat menjalankan cd Desktop perintah untuk beralih ke /home/himanshu/Desktop direktori, tetapi Anda tidak dapat melakukan ls . Ini contohnya:
$ pwd
/home/himanshu/Downloads
$ ls Desktop
ls: cannot access Desktop: No such file or directory
$
Namun, mungkin ada beberapa solusi sederhana. Misalnya, kita dapat mencapai apa yang kita inginkan dengan sedikit usaha dengan cara berikut:
$ cd Desktop/;ls
/home/himanshu/Desktop
backup backup~ Downloads gdb.html outline~ outline.txt outline.txt~
Tapi ya, mungkin tidak ada solusi untuk setiap situasi.
Poin penting lainnya: seperti yang mungkin telah Anda amati, setiap kali Anda menggunakan perintah cd dengan kumpulan variabel lingkungan CDPATH, perintah tersebut menghasilkan jalur lengkap direktori tempat Anda beralih di output. Tak perlu dikatakan, tidak semua orang ingin memiliki informasi ini setiap kali mereka menjalankan perintah cd di mesin mereka.
Untuk memastikan output ini ditekan, Anda dapat menggunakan perintah berikut:
alias cd='>/dev/null cd'
Perintah yang disebutkan di atas akan menonaktifkan output setiap kali perintah cd berhasil, tetapi akan memungkinkan pesan kesalahan dihasilkan setiap kali perintah gagal.
Terakhir, jika Anda menghadapi masalah di mana setelah menyetel variabel lingkungan CDPATH, Anda tidak dapat menggunakan fitur penyelesaian tab shell, maka Anda dapat mencoba menginstal dan mengaktifkan penyelesaian bash - selengkapnya di sini.
Kesimpulan
Variabel lingkungan CDPATH adalah pedang bermata dua - jika tidak digunakan dengan hati-hati dan pengetahuan yang lengkap, variabel ini dapat membuat Anda terjebak dalam beberapa jebakan kompleks yang mungkin memerlukan banyak waktu Anda yang berharga untuk diselesaikan. Tentu saja, itu tidak berarti Anda tidak boleh mencobanya; cukup evaluasi semua opsi yang tersedia dan jika Anda menyimpulkan bahwa menggunakan CDPATH akan sangat membantu, lanjutkan dan gunakan.
Sudahkah Anda menggunakan CDPATH seperti seorang profesional? Apakah Anda memiliki beberapa tips lagi untuk dibagikan? Silakan bagikan pemikiran Anda dalam komentar di bawah.