Piszę skrypt bash, który uruchamia każdy z argumentów jako polecenie. Działa to dla poleceń w moim PATH
, ale nie dla aliasów. Mogę bezpośrednio wywołać alias w skrypcie, ale nie mogę wywołać aliasu, który został przekazany jako argument.
Problem (zakładam) polega na tym, że aliasy są rozwijane przed zmiennymi. Czy istnieje sposób uruchamiania aliasów ze zmiennej?
Przykładowy skrypt:
#!/bin/bash
# File: runall
shopt -s expand_aliases
source ~/.aliases
while (( "$#" )); do
$1
shift
done
runall "echo test"
działa, ale runall "myalias"
dajerunall: line 8: myalias: command not found
eval
zmiennych?eval "echo $1"
. Powiedz, że dzwonię./script.sh "hello;rm -rf ~
. Co zostaje stracone?echo hello
, a następnierm -rf ~
. Oczywiście jest to wymyślony przykład, ale zasada obowiązuje.eval
przed$1
pracą, ponieważ już miałemshopt -s expand_aliases
. Dzięki!Miałem podobny problem i udało mi się rozwiązać problem, zmieniając aliasy w funkcje opisane w tej witrynie , która działała dla mnie.
na przykład
do
źródło