Qual é a diferença entre .profile e .bash_profile e por que não tenho um arquivo .profile no meu sistema?

11

Então, sou muito novo no Linux e recentemente instalei o Fedora 19 no meu netbook. Eu quero ter uma compreensão mais profunda do Linux e do CLI, então agora estou lendo Aprenda Linux: The Hard Way .

No exercício 3, o autor dá os seguintes comandos:

  • ls -al
  • cat .profile

Eu tento seguir estas instruções, mas sem sucesso. Não há nenhum arquivo .profile no meu diretório de nome de usuário, como posso ver em ls -al. Pelo que aprendi, os arquivos .bash_profile e .profile são praticamente os mesmos. A única diferença que concluí da minha pesquisa é que .bash_profile é verificado primeiro.

O que eu não entendo é por que existem vários arquivos para a mesma função no Linux, porque o autor está usando .profile e não .bash_profile (se eu entendi corretamente .profile não será lido quando o sistema encontrar. bash_profile primeiro) e como é que eu não tenho o arquivo .profile no meu sistema?

    
por Emiroe 20.07.2013 / 13:11

1 resposta

12

O .profile data da shell Bourne original, conhecido como sh . Como o shell% GNUbash é (dependendo de suas opções) um superconjunto do shell Bourne, ambos os shells podem usar o mesmo arquivo de inicialização. Ou seja, desde que apenas os comandos sh sejam colocados em .profile

Por exemplo, alias é um comando interno válido de bash , mas desconhecido para sh . Portanto, se você tivesse apenas um .profile em seu diretório inicial e colocasse uma instrução alias , sh iria reclamar. Portanto, há um arquivo específico do bash que possui comandos de inicialização do shell que o bash lerá se e somente se não houver um arquivo .profile presente.

Na verdade isso é uma simplificação em algumas instalações, e eu não estou familiarizado com o Fedora. Sob bash, /etc/profile é lido pelo shell antes de qualquer arquivo em seu diretório inicial. Se houver um script de inicialização do sistema, ele geralmente diz algo como

if there is a $HOME/.profile:
   source it
elseif bash is my shell and there is a $HOME/.bash_profile:
   source that

Por que isso é assim? Uma tentativa de compatibilidade entre décadas de dialetos de shell. Por que o tutorial é escrito dessa maneira? A shell Bourne não é mais usada com frequência e algumas pessoas nem sabem que existe outra shell semelhante a Bourne que a bash. Mesmo quando a sintaxe Bourne (limitada) é usada para maior compatibilidade entre plataformas, ela está sendo executada com frequência por dash ou bash no modo de compatibilidade POSIX. De fato, a fonte real do shell Bourne é provavelmente um componente de direitos autorais do Unix System V, que parece ser propriedade da Novell agora mas eu não tenho idéia do que, se alguma coisa, eles estão fazendo com isso.

Para o usuário iniciante, use $HOME/.profile ou $HOME/.bash_profile , mas não ambos, e você ficará bem. Já que você já tem um .bash_profile , trabalhe com ele, porque ele pode ter coisas específicas do sistema que sua instalação precisa.

    
por 20.07.2013 / 13:41

Tags