Quiero ejecutar un alias dentro de una bash -c
construcción.
El bash
manual dice:
Los alias no se expanden cuando el shell no es interactivo, a menos que la
expand_aliases
opción del shell se establezca utilizandoshopt
En este ejemplo, ¿por qué hi
no se encuentra el alias cuando se configura expand_aliases
explícitamente?
% 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
Estoy corriendo GNU bash, version 5.0.0(1)-release (x86_64-pc-linux-gnu)
.
Contexto: quiero poder ejecutar un alias con prioridad inactiva, por ejemplo, un script que contenga:
#!/bin/bash
exec chrt -i 0 nice -n 19 ionice -c 3 bash -c ". ~/.config/bash/aliases; shopt -s expand_aliases; $(shell-quote "$@")"
Quiero evitar el uso bash -i
ya que no quiero .bashrc
que se lea mi .
bash -c "hi () { echo hello; }; hi"
salidas hello
.
zsh
: los alias zsh no se expanden incluso con la opcióncomplete_aliases