Algumas coisas a serem observadas aqui, primeiro sobre a execução da opção --login
:
When bash is invoked as an interactive login shell, or as a non-inter‐
active shell with the --login option, it first reads and executes com‐
mands from the file /etc/profile, if that file exists. After reading
that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile,
in that order, and reads and executes commands from the first one that
exists and is readable.
Portanto, este comando não está lendo seu .bashrc
. Em segundo lugar, os aliases funcionam apenas em shells interativos, portanto, mesmo que esse alias esteja sendo gerado, ele não funcionará em seu comando. Funções, no entanto, funcionam em shells não interativos. Portanto, você deve converter seus aliases em funções e fornecê-los em uma das coisas mencionadas acima, como ~/.bash_profile
.
Como alternativa, você pode exportar funções definidas no ambiente atual para aquela herdada por bash -c
. Eu tenho essa função:
adrian@adrian:~$ type fn
fn is a function
fn ()
{
find . -name "$1"
}
Qual eu posso chamar em um subshell assim:
adrian@adrian:~$ export -f fn
adrian@adrian:~$ bash -c "fn foo*"
./foo.bar