Qual é a diferença entre ~/.profile
e ~/.bash_profile
?
Qual é a diferença entre ~/.profile
e ~/.bash_profile
?
Respostas:
O .profile
foi a configuração do perfil original para o shell Bourne (aka, sh
). bash
, sendo um shell compatível com Bourne, ele será lido e utilizado. Por .bash_profile
outro lado, é lido apenas por bash
. Destina-se a comandos incompatíveis com o shell Bourne padrão.
.profile
. Por exemplo, bash
e ksh
mas não csh
ou tcsh
. E zsh
fornece ambos sh
e csh
compatibilidade para que ele leia ambos .profile
e .login
, assim como zsh
arquivos de pontos específicos.
O original foi sh
originado .profile
na inicialização.
bash
tentará originar .bash_profile
primeiro, mas se isso não existir, ele origina .profile
1 .
Observe que, se bash
iniciado como sh
(por exemplo, /bin/sh
um link para /bin/bash
) ou iniciado com o --posix
sinalizador, ele tenta emular sh
e apenas lê .profile
.
Notas de rodapé:
.bash_profile
, .bash_login
,.profile
Veja também:
Você sabe que existem muitos shells no mundo UNIX, mas a maioria deles é:
/bin/sh
(Inventor: Stephen Bourne)/bin/bash
(Inventor: Brian Fox, sob o projeto GNU) (shell poderoso)/bin/csh
(Inventor: Bill Joy, Inventor da pilha TCP / IP)/bin/ksh
(Inventor: David Korn no Bell Labs)/bin/zsh
(Escudo poderoso)/bin/tcsh
(derivado de Shell C)/bin/dash
(Derivado da shell Almquist (ash no projeto NetBSD)) (Dash nascido de lenny)Mas sua pergunta é sobre ~/.bash_profile
e ~/.profile
:
Quando você faz login em uma máquina UNIX, ela é redirecionada para o diretório inicial, de acordo com o shell escolhido por um administrador no último campo /etc/passwd
, como:
mohsen:x:1000:1000:Mohsen Pahlevanzadeh,,,:/home/mohsen:/bin/bash
Seu shell é executado e, por padrão, cada shell possui um arquivo definido para login
e logout
. Quando você logar em bash, ~/.profile
é executado e quando você logout
, ~/.bash_logout
é executado.
~/.bash_history
O arquivo mantém seu comando de entrada.
~/.login
Quando você entra~/.logout
Quando você se desconecta~/.tcshrc
mesmo que ~./bashrc
no bashVocê pode definir variável $histfile
como nome do arquivo de histórico e variável $history
como número de comandos a serem mantidos.
Na verdade, é um shell poderoso e, se você tiver tempo livre, certifique-se de migrar para ele.
Exceto em outros shell, o shell Z tem muitos arquivos de configuração e arquivos de inicialização, apenas escrevo:
$ZDOTDIR/.zshenv
$ZDOTDIR/.zprofile
$ZDOTDIR/.zshrc
$ZDOTDIR/.zlogin
$ZDOTDIR/.zlogout
/tmp/zsh*
/etc/zshenv
/etc/zprofile
/etc/zshrc
/etc/zlogin
Nota: se $ZDOTDIR
não estiver definido, ajuste para casa.
Nota: O shell TENEX C foi bifurcado no shell C. C shell suporta por BSD. Se você está familiarizado com a programação em linguagem C, deve se sentir confortável, pois sua sintaxe é semelhante.
~/.login
~/.cshrc
~/.logout
Nota: csh é antigo. Use o tcsh.
~/.profile
É uma concha muito poderosa e nasceu no projeto GNU e bifurcada pela Bourne Shell.
~/.bash_login
~/.bash_logout
~/.bashrc
~/.bash_profile
~/.bash_history
Quando você faz login, o bash é executado ~/.bash_profile
e ~/.bash_profile
executado ~/.bashrc
. Na verdade, ~/.bashrc
não é um arquivo de inicialização do bash, porque o bash não o executa.
Está morto. Mesmo quando você usa man sh
, você vê o manual de dash
. [Nota do editor: o pouco dash
se aplica apenas a distribuições baseadas no Debian e no Debian como o Ubuntu.]
~/.bash_profile
trabalhar sob bash, mas ~/.profile
trabalhar sob Bourne e Korn shell.
Um shell de logon é simplesmente um shell no qual você pode fazer o login via ssh ou no console. Um shell sem login é um shell em que alguém também não pode entrar. Um shell sem login é frequentemente usado por programas / serviços do sistema.
Quanto ao seu terceiro ponto. É verdade que .bashrc
é executado em cada instância do shell. No entanto, .bash_profile
é usado apenas no login. Assim, o motivo dos dois arquivos separados.
.profile
é para itens que não estão especificamente relacionados ao Bash, como as variáveis de ambiente $ PATH, que também devem estar disponíveis a qualquer momento. .bash_profile
é especificamente para shells de login ou shells executados no login.