Estoy escribiendo un script bash que ejecuta cada uno de sus argumentos como un comando. Esto funciona para comandos en mi PATH
, pero no para alias. Puedo llamar directamente a un alias en el script, pero no puedo llamar a un alias que se haya pasado como argumento.
El problema (supongo) es que los alias se expanden antes que las variables. ¿Hay alguna forma de ejecutar alias desde una variable?
Script de muestra:
#!/bin/bash
# File: runall
shopt -s expand_aliases
source ~/.aliases
while (( "$#" )); do
$1
shift
done
runall "echo test"
funciona, pero runall "myalias"
darunall: line 8: myalias: command not found
eval
variables?eval "echo $1"
. Di que llamo./script.sh "hello;rm -rf ~
. ¿Qué se ejecuta?echo hello
, seguido porrm -rf ~
. Obviamente ese es un ejemplo artificial, pero el principio es válido.eval
frente a$1
trabajado, ya que ya lo había hechoshopt -s expand_aliases
. ¡Gracias!Tuve un problema similar y logré resolver mi problema convirtiendo mis alias en funciones, como se describe en este sitio , que funcionó para mí.
p.ej
a
fuente