Je veux exécuter un alias dans une bash -c
construction.
Le bash
manuel dit:
Les alias ne sont pas développés lorsque le shell n'est pas interactif, sauf si l'
expand_aliases
option shell est définie à l'aide deshopt
Dans cet exemple, pourquoi l'alias hi
n'est-il pas trouvé lors de la définition expand_aliases
explicite?
% 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
Je cours GNU bash, version 5.0.0(1)-release (x86_64-pc-linux-gnu)
.
Contexte: je veux pouvoir exécuter un alias à priorité inactive, par exemple un script contenant:
#!/bin/bash
exec chrt -i 0 nice -n 19 ionice -c 3 bash -c ". ~/.config/bash/aliases; shopt -s expand_aliases; $(shell-quote "$@")"
Je veux éviter d'utiliser bash -i
car je ne veux pas que je .bashrc
sois lu.
bash -c "hi () { echo hello; }; hi"
sorties hello
.
zsh
: les alias zsh ne se développent pas même avec une optioncomplete_aliases