Tôi muốn chạy một bí danh trong một bash -c
cấu trúc.
Các bash
tay nói:
Bí danh không được mở rộng khi shell không tương tác, trừ khi
expand_aliases
tùy chọn shell được đặt bằng cách sử dụngshopt
Trong ví dụ này, tại sao bí danh hi
không được tìm thấy khi cài đặt expand_aliases
rõ ràng?
% 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
Tôi đang chạy GNU bash, version 5.0.0(1)-release (x86_64-pc-linux-gnu)
.
Bối cảnh: Tôi muốn có thể chạy bí danh ở mức ưu tiên nhàn rỗi, ví dụ: tập lệnh chứa:
#!/bin/bash
exec chrt -i 0 nice -n 19 ionice -c 3 bash -c ". ~/.config/bash/aliases; shopt -s expand_aliases; $(shell-quote "$@")"
Tôi muốn tránh sử dụng bash -i
vì tôi không muốn .bashrc
đọc.
bash -c "hi () { echo hello; }; hi"
đầu ra hello
.
zsh
: bí danh zsh không mở rộng ngay cả với tùy chọncomplete_aliases