Saya mengatur alias di /etc/profile.d/alias.sh untuk setiap shell login. Tetapi jika saya menjalankan script.sh, saya tidak bisa menggunakan alias itu. Bagaimana saya bisa mengatur alias bahkan untuk subkulit atau proses anak?
/etc/profile.d/alias.sh
alias rmvr='rm -rv';
alias cprv='cp -rv';
alias mvrv='mv -rv';
()
alias foo='echo foobar'
,, enter,(foo)
outputfoobar
.Itu karena /etc/profile.d/ hanya digunakan oleh shell login interaktif. Namun,
/etc/bash.bashrc
digunakan oleh shell non-login interaktif.Seperti biasanya saya mengatur beberapa alias global untuk sistem, saya sudah mulai membuat di
/etc/bashrc.d
mana saya bisa meletakkan file dengan beberapa alias global:sumber
Jika Anda ingin mereka diwarisi ke sub-shell, gunakan fungsi saja. Mereka dapat diekspor ke environment (
export -f
), dan sub-shells kemudian akan memiliki fungsi-fungsi tersebut didefinisikan.Jadi, untuk salah satu contoh Anda:
Jika Anda memiliki banyak dari mereka, maka tetapkan untuk ekspor terlebih dahulu:
sumber
Pertanyaan serupa, saya ingin menjalankan bash "mode perintah" dan menyediakan alias:
bash -i 'alias'
tidak melakukan apa-apa. Tapi saya menemukan flag -i yang menjalankan setup interaktif, jadi ini:bash -ci 'alias'
tidak berfungsi.Untuk pertanyaan Anda, tampaknya Anda bisa mengelak dengan "mencari" file tersebut, mis:
Kemudian alias berfungsi. FWIW ...
sumber