Diferença entre ~ / .profile e ~ / .bash_profile

47

Qual é a diferença entre ~/.profile e ~/.bash_profile ?

    
por lakesh 17.08.2012 / 05:57

4 respostas

35

O .profile era a configuração original do perfil para o shell Bourne (também conhecido como sh ). bash , sendo um shell compatível com o Bourne, irá lê-lo e usá-lo. O .bash_profile , por outro lado, é lido apenas por bash . Destina-se a comandos que são incompatíveis com o shell Bourne padrão.

    
por 17.08.2012 / 07:00
18

O original sh sourced .profile na inicialização.

bash tentará originar .bash_profile primeiro, mas se isso não existir, ele fornecerá .profile 1 .

Observe que se bash for iniciado como sh (por exemplo, /bin/sh é um link para /bin/bash ) ou iniciado com o sinal --posix , ele tentará emular sh e só lerá .profile .

Notas de rodapé:

  1. Na verdade, o primeiro de .bash_profile , .bash_login , .profile

Veja também:

por 17.08.2012 / 17:37
8

Você sabe que existem muitos shells no mundo UNIX, mas a maioria deles é:

Bourne shell == /bin/sh => inventor : Stephen Bourne

BASH (Bourne Again Shell) == /bin/bash => inventor : (Brian Fox , under GNU project) (powerful shell)

C SHELL == /bin/csh ==>   inventor: Bill Joy, Inventor of TCP/IP Stack

Korn Shell == /bin/ksh ==> inventor: David Korn under Bell Labs

Z Shell == /bin/zsh ==> (Powerful shell)

TENEX C SHELL == /bin/tcsh => derived from c shell

Debian Almquist shell == /bin/dash => derived from  Almquist shell (ash under NetBSD project)  (Dash born from lenny)

Mas a sua pergunta é sobre ~/.bash_profile e ~/.profile :

Quando você faz o login em uma máquina UNIX, ele redireciona para seu diretório pessoal, de acordo com o shell escolhido por um administrador no último campo de /etc/passwd como:

mohsen:x:1000:1000:Mohsen Pahlevanzadeh,,,:/home/mohsen:/bin/bash

Seu shell é executado e, por padrão, cada shell tem um arquivo definido para login e logout . Quando você faz login em bash shell , ~/.profile é executado e quando você executa logout , ~/.bash_logout é executado. ~/.bash_history file mantém seu comando de entrada.

Arquivo de inicialização em cada shell

TENEX C SHELL:

~/.login = > When you login
~/.logout = > When you logout
~/.tcshrc  = > same as ~./bashrc in bash shell
You can set variable $histfile as name of history file and variable $history as number of commands to keeping.

Z SHELL

Na verdade, é um poderoso shell e, se eu tiver tempo livre, migre para ele.

Exceto de outro shell, o shell Z possui muitos arquivos de configuração e arquivos de inicialização, apenas eu escrevo:

$ZDOTDIR/.zshenv
$ZDOTDIR/.zprofile
$ZDOTDIR/.zshrc
$ZDOTDIR/.zlogin
$ZDOTDIR/.zlogout
/tmp/zsh*
/etc/zshenv
/etc/zprofile
/etc/zshrc
/etc/zlogin

Note: if $ZDOTDIR unset, home set.

C SHELL

Nota: Shell TENEX C bifurcado de C Shell, C Shell suporta por BSD. Se você está familiarizado com a programação em linguagem C, então você acredita em sua sintaxe como essa.

    ~/.login
    ~/.cshrc
    ~/.logout
Note : if you need to it, use tcsh and csh is old but live.

Korn Shell

~/.profile
rc file == user defined
logout file ==  N/A

Bourne Again SHELL (BASH)

É um shell muito poderoso, nascido sob o projeto GNU e bifurcado pela Bourne Shell.

~/.bash_login
~/.bash_logout
~/.bashrc
~/.bash_profile
~/.bash_history
When you login, bash runs ~/.bash_profile and ~/.bash_profile runs ~/.bashrc, indeed ~/.bashrc isn't bash initialization file.Because bash doesn't run it.

Bourne Shell

É inoperante, mesmo quando você usa man sh , você vê o manual de dash .

Sua resposta:

~/.bash_profile trabalham com bash shell , mas ~/.profile trabalham com bourne e korn shell

    
por 03.10.2017 / 17:29
4

Um shell de login é simplesmente um shell que você pode acessar como via ssh ou no console. Um shell não-login é um shell que alguém não pode logar também. Um shell de não-login é freqüentemente 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 somente no login. Assim, a razão para os dois arquivos separados.

.profile é para coisas que não são especificamente relacionadas ao Bash, como as variáveis de ambiente $ PATH, elas também devem estar disponíveis a qualquer momento. .bash_profile é especificamente para shells de login ou shells executados no login.

    
por 17.08.2012 / 06:44

Tags