Я хочу запустить псевдоним внутри bash -cконструкции.
В bashруководстве сказано:
Псевдонимы не раскрываются, когда оболочка не является интерактивной, если параметр
expand_aliasesоболочки не установлен с помощьюshopt
В этом примере почему псевдоним hiне найден при expand_aliasesявной настройке ?
% 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
Я бегу GNU bash, version 5.0.0(1)-release (x86_64-pc-linux-gnu).
Контекст: я хочу иметь возможность запускать псевдоним с приоритетом ожидания, например, скрипт, содержащий:
#!/bin/bash
exec chrt -i 0 nice -n 19 ionice -c 3 bash -c ". ~/.config/bash/aliases; shopt -s expand_aliases; $(shell-quote "$@")"
Я хочу избежать использования, bash -iпоскольку я не хочу, чтобы мои .bashrcчитали.
bash -c "hi () { echo hello; }; hi"выходы hello.
zsh: псевдонимы zsh не расширяются даже с опциейcomplete_aliases