Saya telah mencari-cari tetapi tidak dapat menemukan sesuatu yang konklusif. Apakah ada perbedaan antara perintah alias di zsh dan perintah alias di bash? Jika tidak, apakah ini berarti saya dapat membagikan satu set alias di antara dua shell dan berharap keduanya berfungsi seperti yang saya maksud?
9
Sintaks
alias
perintahnya sama di semua shell gaya Bourne. Sehingga Anda dapat berbagi mereka di~/.zshrc
,~/.bashrc
,~/.kshrc
,~/.shrc
, selama mereka masuk akal dalam semua kerang.Hal yang sama berlaku untuk definisi variabel dan definisi fungsi, selama Anda menggunakan subset sintaks yang didukung di semua shell.
Jika Anda tidak menggunakan versi zsh yang lebih lama dari 4.0, Anda dapat meletakkan semua definisi agnostik shell Anda dalam file bernama (katakanlah)
~/.common.rc.sh
, di mana baris pertama adalahIni memberitahu zsh untuk mengharapkan sintaks yang kompatibel dengan sh dalam file ini saja. Kemudian sumber file di dekat awal
~/.bashrc
,~/.bashrc
,~/.kshrc
dan sebagainya.Ini pada dasarnya apa yang saya lakukan. Sebagai contoh, saya memiliki kode agak rumit yang menghasilkan alias untuk
ls
dengan pilihan favorit saya tergantung pada apa yang tersedia (--color
,-G
,-F
, dll); itu shell-agnostik, jadi masuklah.common.rc.sh
. Saya juga memiliki alias yang bergantung pada shell, sepertialias zcp='zmv -C'
itu.zshrc
.sumber
/bin/sh
shebang di bagian atas file alias saya, apakah itu akan berhasil karena saya bermaksud untuk semua shell?#!
garis: ini bukan skrip mandiri, hanya dapat bersumber di skrip lain.#!
toh tidak mengubah perilaku shell.alias
memperlakukan argumen yang diawali dengan+
memperkenalkan opsi seperti-
akan, jadialias +=something
harus ditulis sepertialias -- +=something
dalam zsh. Jangan berpikiremulate
mengubahnya.~/.shrc
karena Bourne Shell memiliki implementasi alias paling kuat tetapizsh
menggunakan nama opsi yang tidak kompatibel.alias -g
menciptakan alias persisten$HOME/.globals
dengan Bourne Shell. Berbagi definisi alias hanya aman selama Anda menggunakan tidak lebih dari fitur POSIX.zsh
'salias
memungkinkan alias global, sedangkanbash
s hanya diperluas di awal baris.Dalam
zsh
:Anda kemudian dapat melakukan:
Lihat di sini untuk daftar alias global yang bermanfaat.
sumber