Saya ingin menjalankan alias di dalam bash -c
konstruk.
The bash
pengguna mengatakan:
Alias tidak diperluas ketika shell tidak interaktif, kecuali jika
expand_aliases
opsi shell diatur menggunakanshopt
Dalam contoh ini, mengapa alias hi
tidak ditemukan saat pengaturan expand_aliases
secara eksplisit?
% bash -O expand_aliases -c "alias hi='echo hello'; alias; shopt expand_aliases; hi"
alias hi='echo hello'
expand_aliases on
bash: hi: command not found
Saya sedang berlari GNU bash, version 5.0.0(1)-release (x86_64-pc-linux-gnu)
.
Konteks: Saya ingin dapat menjalankan alias pada prioritas siaga, misalnya skrip yang berisi:
#!/bin/bash
exec chrt -i 0 nice -n 19 ionice -c 3 bash -c ". ~/.config/bash/aliases; shopt -s expand_aliases; $(shell-quote "$@")"
Saya ingin menghindari menggunakan bash -i
karena saya tidak ingin saya .bashrc
dibaca.
bash -c "hi () { echo hello; }; hi"
output hello
.
zsh
: alias zsh tidak berkembang bahkan dengan opsicomplete_aliases