Ich möchte einen Alias in einem bash -cKonstrukt ausführen .
Das bashHandbuch sagt:
Aliase werden nicht erweitert, wenn die Shell nicht interaktiv ist, es sei denn, die
expand_aliasesShell-Option wird mit festgelegtshopt
Warum wird in diesem Beispiel der Alias hibeim expand_aliasesexpliziten Festlegen nicht gefunden ?
% 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
Ich renne GNU bash, version 5.0.0(1)-release (x86_64-pc-linux-gnu).
Kontext: Ich möchte in der Lage sein, einen Alias mit Leerlaufpriorität auszuführen, z. B. ein Skript mit:
#!/bin/bash
exec chrt -i 0 nice -n 19 ionice -c 3 bash -c ". ~/.config/bash/aliases; shopt -s expand_aliases; $(shell-quote "$@")"
Ich möchte die Verwendung vermeiden, bash -ida ich nicht möchte, dass meine .bashrcgelesen wird.
bash -c "hi () { echo hello; }; hi"Ausgänge hello.
zsh: zsh Aliase erweitern nicht einmal mit Optioncomplete_aliases