Existem alguns problemas possíveis aqui.
-
Você não está executando como
root
. O alias é definido no~/.bashrc
da raiz, portanto, se você estiver executando como outro usuário, ele não será encontrado. Se esse for o caso, adicione a linhaalias
ao usuário~/.bashrc
ou 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 comandochsh
para defini-lo como bash. -
Você está executando como
root
, mas este é um shell de login (por exemplo, se você usoussh
para efetuar login). Se o~/profile
que você mostra não estiver em/root
, o alias.bashrc
não será carregado. As conchas de login ignoram.bashrc
, e é por isso que você tem essas linhas em.profile
.Se o
.profile
for da raiz, ele ainda poderá ser ignorado se existir/root/.bash_profile
ou/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