Existem alguns problemas possíveis aqui.
-
Você não está executando como
root. O alias é definido no~/.bashrcda raiz, portanto, se você estiver executando como outro usuário, ele não será encontrado. Se esse for o caso, adicione a linhaaliasao usuário~/.bashrcou mude para a raiz. -
Você está executando como root, mas não está executando
bash. Faça o login como root e verifique a saída deecho $SHELL. Se isso não for/bin/bash, use o comandochshpara defini-lo como bash. -
Você está executando como
root, mas este é um shell de login (por exemplo, se você usousshpara efetuar login). Se o~/profileque você mostra não estiver em/root, o alias.bashrcnão será carregado. As conchas de login ignoram.bashrc, e é por isso que você tem essas linhas em.profile.Se o
.profilefor da raiz, ele ainda poderá ser ignorado se existir/root/.bash_profileou/root/bash_login.
UPDATE
Agora que você deu mais informações, posso dizer que o problema é, na verdade, 3. Então, você está se conectando com o ssh, o que significa que você está executando uma shell de login . Esses shells não lêem .bashrc , e é por isso que o .profile contém o pequeno loop que chama .bashrc explicitamente. No entanto, se ~/.bash_profile ou ~/.bash_login existir, ~/.profile será ignorado. Então, porque você também tem ~/.bash_profile , ~ / .profile is not read and since ~ / .bash_profile does not source ~ / .bashrc , your alias is not available. This is explained in man bash ':
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. The --noprofile option may be used when the shell is started to inhibit this behavior.
Então, a solução mais simples seria mesclar os arquivos. Adicione as linhas de .profile a .bash_profile ou vice-versa . Se você optar por adicionar as linhas de ~/.bash_profile a ~ / .profile , make sure you delete ~ / .bash_profile 'após a mesclagem.
Seja qual for o motivo, o alias nunca estará disponível para seus scripts. Ao executar um script, o bash é chamado como um shell não interativo e não-login e os ~/.profile e .bashrc são ignorados. Além disso, os aliases não são disponibilizados para scripts, a menos que você ative a opção expand_aliases :
shopt -s expand_aliases
Portanto, para fazer um alias funcionar em seu script, você precisará i) ler manualmente o arquivo onde o alias está definido (porque ~/.bashrc não é lido por scripts) e ii) habilitar a opção expand_aliases .
Por exemplo:
#!/usr/bin/bash
## Make your aliases available to the script
shopt -s expand_aliases
## Read .bashrc
. ~/.bashrc
## Run your mysql command
mysql