Shell yang biasa saya gunakan adalah zsh
. Saya memiliki beberapa alias untuk mengaktifkan warna di beberapa program seperti ls
dan grep
. Saya juga telah menetapkan jalur khusus saya sehingga saya dapat menjalankan program di tempat yang tidak standar (seperti di ~/bin/
).
Aku tidak akan mengubah shell root untuk zsh
, tapi saya ingin berbagi pengaturan ini sehingga akar dapat memilikinya juga. Saya menemukan bahwa zsh
itu bukan sumber /etc/profile
. Saya dapat sumbernya /etc/zsh/zprofile
, tapi saya ingin cara lain yang lebih "tepat".
Zsh memiliki mode kompatibilitas sh yang memungkinkannya menjalankan kode sh POSIX dan beberapa ekstensi bash. Selama Anda tidak menggunakan fitur bash yang tidak dimiliki zsh (dengan sintaks yang sama), Anda dapat memiliki file yang sama yang bersumber dari kedua shell. Gunakan
emulate
bawaan untuk menempatkan zsh dalam mode kompatibilitas; dengan-L
opsi, emulasi bersifat lokal untuk fungsi penutup (bukan skrip sumber terlampir).Untuk hal-hal seperti variabel lingkungan, Anda dapat menggunakan
source_sh /etc/profile
dalam/etc/zprofile
dansource_sh ~/.profile
dalam~/.zprofile
, karena file profil tidak cenderung menggunakan fitur spesifik bash.Untuk hal-hal seperti alias dan definisi fungsi, karena file shell rc cenderung mengandung banyak hal yang tidak dapat dibagi (prompt, binding kunci, pengaturan selesai, ...), menggunakan file seperti
~/.sh_aliases
yang bersumber di~/.bashrc
dansource_sh
'd di~/.zshrc
.sumber
Bagaimana dengan symlink sederhana?
ln -s /etc/profile /etc/zsh/zprofile
Anda juga dapat menambahkan sesuatu seperti ini jika Anda memerlukan inisialisasi bersyarat:
sumber
/bin/ls -l /proc/$$/exe
adalahps -o comm= -p $$
. Ini tidak sepenuhnya dapat diandalkan karena beberapa shell berperilaku berbeda tergantung pada bagaimana mereka dipanggil; dalam praktek hanya menguji$0
di.profile
kemungkinan menjadi indikasi yang lebih baik. Tapi kebanyakan kerang yang menawarkan fitur yang bermanfaat (bash, ksh, zsh) dapat hanya diakui (dan versi mereka diidentifikasi, yang ditambah besar) dengan menguji beberapa variabel:$BASH
,$BASH_VERSION
,$BASH_VERSINFO
;$KSH_VERSION
,${.sh.version}
;$ZSH_VERSION
.Mengenai variabel, saya memiliki kesan bahwa Anda kehilangan modul & modulefiles [1]. Setelah Anda mulai melakukannya, akan mudah untuk membuat profil umum untuk berbagai shell (termasuk bash & zsh), python, perl dan bahkan lebih banyak lingkungan, semua dari kenyamanan satu file modul.
Dimungkinkan juga untuk mendefinisikan alias dengan cara yang sama; namun, Anda akan dengan cepat menemukan bahwa alias tidak diwarisi dengan baik di antara cangkang yang berurutan dan mungkin perlu diperbaiki.
[1] http://en.wikipedia.org/wiki/Environment_Modules_(software)
sumber