Estou escrevendo um script bash que executa cada um de seus argumentos como um comando. Isso funciona para comandos no meu PATH
, mas não para aliases. Posso chamar diretamente um alias no script, mas não posso chamar um alias que foi passado como argumento.
O problema (suponho) é que os aliases são expandidos antes das variáveis. Existe uma maneira de executar aliases de uma variável?
Exemplo de script:
#!/bin/bash
# File: runall
shopt -s expand_aliases
source ~/.aliases
while (( "$#" )); do
$1
shift
done
runall "echo test"
funciona, mas runall "myalias"
dárunall: line 8: myalias: command not found
eval
variáveis?eval "echo $1"
. Diga que eu ligo./script.sh "hello;rm -rf ~
. O que é executado?echo hello
, seguido porrm -rf ~
. Obviamente, esse é um exemplo artificial, mas o princípio é válido.eval
na frente do$1
trabalhado, já que eu já tinhashopt -s expand_aliases
. Obrigado!Eu tive um problema semelhante e consegui resolver meu problema transformando meus aliases em funções, conforme descrito neste site , que funcionou para mim.
por exemplo
para
fonte