A expansão de alias é feita somente a partir do shell interativo, mas não dentro dos scripts, portanto debug
é expandido para newtab
, mas newtab
não é expandido, pois é chamado a partir de um script.
Se você usar funções exportadas em vez de aliases, isso funcionará: -
debug() { $scripts/debug.sh; }; export -f debug
...
newtab() { $scripts/newtab.osx.sh; }; export -f newtab
A exportação é necessária, porque os scripts são executados em sub-shells, embora para a instância específica citada seja apenas newtab
que precisa ser uma função.
As funções podem ser usadas em vez de aliases em todos os lugares, mas podem fazer muito mais, como adicionar um parâmetro extra ao final da sequência de execução, um requisito muito simples que os aliases não podem fazer. Na verdade, eles podem fazer qualquer coisa, mas diferentemente dos scripts que executam no shell atual, podem mudar o ambiente e o diretório atual, para o qual um script precisa do comando .
ou source
.