Вместо этого вы можете использовать source
встроенную команду:
ваш a.sh
должен выглядеть так:
function init(){
export aData="Data of a"
echo "init of a"
}
function execute(){
init
echo "execute of a >$aData<"
}
и вы можете вызвать функцию execute таким образом в оболочке sh:
alias ae=". a.sh; execute"
или внутри оболочки bash
псевдоним ae = "источник a.sh; выполнить"
Помните, что все функции, определенные в a.sh
, будут определены в родительской оболочке (например, init, execute, ...). Чтобы избежать такой ситуации (которая может привести к конфликту имен функций), вы можете использовать следующий скрипт t2.sh
:
case "$1" in
execute)
export aData="Data of a"
echo "init of a"
;;
anyother_command_to_exec)
# code
;;
*);;
esac
и выполните команду
alias ae2=". a2.sh execute"