Aliases no .bash_profile não funcionam

2

Eu adicionei alguns comandos cd blah blah como alias no meu .bash_login, de modo a facilitar a mudança de diretórios.Ele estava funcionando bem.De repente, embora nenhum dos aliases lá trabalham.Ele diz comando não encontrado.Eu não tenho idéia de como por que, de repente, ele iria parar de funcionar. Alguma sugestão? (Eu reiniciei meu sistema)

Peço desculpas por ter escrito realmente .bash_login

    
por Manish 27.07.2011 / 23:46

4 respostas

4

Os aliases não são exportados. Ou seja, um alias definido em um shell não faz parte do ambiente herdado por qualquer shells filho. Portanto, o melhor lugar para definir aliases é em seu ~ / .bashrc, não em seu ~ / .bash_profile ou ~ / .profile, já que o primeiro será originado por qualquer shell interativo, enquanto os dois últimos serão originados apenas por shells de login. .

    
por 28.07.2011 / 01:09
2

Use o comando alias no shell para confirmar se eles estão realmente sendo criados ou não. Além disso, você está apenas usando o programa Mac Terminal.app? Em algum lugar nas opções deve ser uma configuração que você pode configurá-lo para usar o que é chamado de shell de login. É assim que o arquivo .bash_profile será originado.

    
por 27.07.2011 / 23:54
1

O arquivo .bash_profile provavelmente não está sendo lido pelo seu shell no lançamento. Muitas distros têm algo parecido com isso no padrão .bashrc:

if [ -f ~/.bash_profile ]; then
        . ~/.bash_profile
fi

Se tudo o que você está usando é aliases, eu recomendo que você nomeie o arquivo ~ / .bash_aliases:

if [ -f ~/.bash_aliases ]; then
        . ~/.bash_aliases
fi

Tudo o que ele faz verifica se o arquivo existe e, em caso afirmativo, executou os comandos nele. No seu caso, os comandos alias. Pop que em seu .bashrc e seus problemas devem ser resolvidos.

EDIT: Na verdade, é um pouco mais complicado do que isso. Minha solução funcionará, mas vale a pena ler .bash_profile vs .bashrc

P.S. Uma reinicialização raramente é necessária para corrigir um problema em um sistema * nix. Um logout e login no máximo.

    
por 28.07.2011 / 01:17
0

Se o que você está tentando fazer é facilitar a alteração dos diretórios, consulte $CDPATH :

CDPATH The search path for the cd command.  This is a colon-separated list of
       directories in  which  the shell looks for destination directories
       specified by the cd command. A sample value is ".:~:/usr".

Usando o exemplo acima, adicione o seguinte ao seu perfil:

CDPATH=.:~:/usr

Então, se não importa em qual diretório você está, você pode facilmente acessar os diretórios filhos de ~ ou /usr .

$ pwd
/var/log
$ cd bin
$ pwd
/usr/bin
    
por 28.07.2011 / 01:35