Я хочу запустить псевдоним внутри 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