¿Cuál es la diferencia entre ~/.profile
y ~/.bash_profile
?
¿Cuál es la diferencia entre ~/.profile
y ~/.bash_profile
?
Respuestas:
El .profile
era la configuración del perfil original para el shell Bourne (aka, sh
). bash
, ser un shell compatible con Bourne lo leerá y usará. El .bash_profile
por otro lado solo es leído por bash
. Está destinado a comandos que son incompatibles con el shell Bourne estándar.
.profile
. Por ejemplo, bash
y ksh
pero no csh
o tcsh
. Y zsh
proporciona tanto sh
y csh
compatibilidad por lo que va a leer tanto .profile
y .login
, además de zsh
archivos punto específico.
El original de sh
origen .profile
en el inicio.
bash
.bash_profile
primero intentará obtener la fuente , pero si eso no existe, generará .profile
1 .
Tenga en cuenta que si bash
se inicia como sh
(por ejemplo, /bin/sh
es un enlace a /bin/bash
) o si se inicia con el --posix
indicador, intenta emular sh
y solo lee .profile
.
Notas al pie:
.bash_profile
, .bash_login
,.profile
Ver también:
Usted sabe que existen muchos shells en el mundo UNIX, pero la mayoría de ellos son:
/bin/sh
(Inventor: Stephen Bourne)/bin/bash
(Inventor: Brian Fox, bajo el proyecto GNU) (potente shell)/bin/csh
(Inventor: Bill Joy, Inventor de TCP / IP Stack)/bin/ksh
(Inventor: David Korn bajo Bell Labs)/bin/zsh
(Caparazón potente)/bin/tcsh
(derivado de C Shell)/bin/dash
(Derivado del shell de Almquist (ceniza bajo el proyecto NetBSD)) (Dash nacido de lenny)Pero su pregunta es sobre ~/.bash_profile
y ~/.profile
:
Cuando inicia sesión en una máquina UNIX, se redirige a su directorio de inicio, de acuerdo con el shell elegido por un administrador en el último campo /etc/passwd
, como:
mohsen:x:1000:1000:Mohsen Pahlevanzadeh,,,:/home/mohsen:/bin/bash
Su shell se ejecuta y, por defecto, cada shell tiene un archivo establecido para login
y logout
. Cuando inicia sesión en bash, ~/.profile
se ejecuta y cuando usted logout
, ~/.bash_logout
se ejecuta.
~/.bash_history
El archivo mantiene su comando de entrada.
~/.login
Cuando inicias sesión~/.logout
Cuando cierre sesión~/.tcshrc
igual que ~./bashrc
en bashPuede establecer la variable $histfile
como nombre del archivo de historial y la variable $history
como número de comandos para mantener.
De hecho, es un shell poderoso y si tienes tiempo libre, asegúrate de migrar a él.
A excepción de otro shell, Z shell tiene muchos archivos de configuración y archivos de inicialización, solo escribo:
$ZDOTDIR/.zshenv
$ZDOTDIR/.zprofile
$ZDOTDIR/.zshrc
$ZDOTDIR/.zlogin
$ZDOTDIR/.zlogout
/tmp/zsh*
/etc/zshenv
/etc/zprofile
/etc/zshrc
/etc/zlogin
Nota: si no está $ZDOTDIR
configurado, conjunto de inicio.
Nota: TENEX C shell se bifurcó de C shell. C shell soporta por BSD. Si está familiarizado con la programación en lenguaje C, debe sentirse cómodo ya que su sintaxis es similar.
~/.login
~/.cshrc
~/.logout
Nota: csh es viejo. Use tcsh en su lugar.
~/.profile
Es un shell muy, muy poderoso y nació bajo el proyecto GNU y bifurcado por Bourne Shell.
~/.bash_login
~/.bash_logout
~/.bashrc
~/.bash_profile
~/.bash_history
Cuando inicia sesión, bash se ejecuta ~/.bash_profile
y se ~/.bash_profile
ejecuta ~/.bashrc
. De hecho, ~/.bashrc
no es el archivo de inicialización de bash, porque bash no lo ejecuta.
Está muerto. Incluso cuando lo usas man sh
, ves el manual de dash
. [Nota del editor: el bit dash
solo se aplica a Debian y distribuciones basadas en Debian como Ubuntu.]
~/.bash_profile
trabajar bajo bash, pero ~/.profile
trabajar bajo Bourne y Korn shell.
Un shell de inicio de sesión es simplemente un shell que puede iniciar sesión a través de ssh o en la consola. Un shell sin inicio de sesión es un shell que alguien no puede iniciar sesión también. Los programas / servicios del sistema suelen utilizar un shell sin inicio de sesión.
En cuanto a tu tercer punto. Es cierto .bashrc
se ejecuta en cada instancia del shell. Sin embargo, .bash_profile
solo se usa al iniciar sesión. De ahí la razón de los dos archivos separados.
.profile
es para cosas que no están específicamente relacionadas con Bash, como las variables de entorno $ PATH, también debería estar disponible en cualquier momento. .bash_profile
es específicamente para shells de inicio de sesión o shells ejecutados al iniciar sesión.