¿Cuál es la diferencia entre ~ / .profile y ~ / .bash_profile?


Respuestas:


44

El .profileera 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_profilepor otro lado solo es leído por bash. Está destinado a comandos que son incompatibles con el shell Bourne estándar.


Si me equivoco, corríjame ... .profile lo utiliza cualquier shell compatible con Bourne, mientras que .bash_profile solo lo usa bash ... ¿estoy en lo cierto?
Lakesh

2
@lakesh: Sí, se leerá cualquier shell que ofrezca compatibilidad con bourne .profile. Por ejemplo, bashy kshpero no csho tcsh. Y zshproporciona tanto shy cshcompatibilidad por lo que va a leer tanto .profiley .login, además de zsharchivos punto específico.
bahamat

¿Hay algún tutorial para leer sobre estas cosas de bash y ksh? Nunca oído hablar de ellos antes ...
lakesh

44
Puede comenzar con el historial de shell de UNIX .
bahamat

25

El original de shorigen .profileen el inicio.

bash.bash_profileprimero intentará obtener la fuente , pero si eso no existe, generará .profile1 .

Tenga en cuenta que si bashse inicia como sh(por ejemplo, /bin/shes un enlace a /bin/bash) o si se inicia con el --posixindicador, intenta emular shy solo lee .profile.

Notas al pie:

  1. En realidad, la primera de .bash_profile, .bash_login,.profile

Ver también:


2
Impresionante ... Gracias ... especialmente por las referencias ...
lakesh

10

Usted sabe que existen muchos shells en el mundo UNIX, pero la mayoría de ellos son:

  • Bourne shell : /bin/sh(Inventor: Stephen Bourne)
  • BASH (Bourne Again Shell): /bin/bash(Inventor: Brian Fox, bajo el proyecto GNU) (potente shell)
  • C shell : /bin/csh(Inventor: Bill Joy, Inventor de TCP / IP Stack)
  • Korn shell : /bin/ksh(Inventor: David Korn bajo Bell Labs)
  • Caparazón Z : /bin/zsh(Caparazón potente)
  • TENEX C shell : /bin/tcsh(derivado de C Shell)
  • Shell de Debian Almquist : /bin/dash(Derivado del shell de Almquist (ceniza bajo el proyecto NetBSD)) (Dash nacido de lenny)

Pero su pregunta es sobre ~/.bash_profiley ~/.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 loginy logout. Cuando inicia sesión en bash, ~/.profilese ejecuta y cuando usted logout, ~/.bash_logoutse ejecuta. ~/.bash_historyEl archivo mantiene su comando de entrada.

Archivo de inicialización en cada shell

TENEX C shell

  • ~/.login Cuando inicias sesión
  • ~/.logout Cuando cierre sesión
  • ~/.tcshrcigual que ~./bashrcen bash

Puede establecer la variable $histfilecomo nombre del archivo de historial y la variable $historycomo número de comandos para mantener.

Z shell

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á $ZDOTDIRconfigurado, conjunto de inicio.

C concha

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.

Korn Shell

  • ~/.profile
  • archivo rc: definido por el usuario
  • archivo de cierre de sesión: N / A

Bourne Again SHell (BASH)

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_profiley se ~/.bash_profileejecuta ~/.bashrc. De hecho, ~/.bashrcno es el archivo de inicialización de bash, porque bash no lo ejecuta.

Bourne shell

Está muerto. Incluso cuando lo usas man sh, ves el manual de dash. [Nota del editor: el bit dashsolo se aplica a Debian y distribuciones basadas en Debian como Ubuntu.]

Tu respuesta

~/.bash_profiletrabajar bajo bash, pero ~/.profiletrabajar bajo Bourne y Korn shell.


2
Chet Ramey fue el desarrollador principal de Bash.
tripleee

4

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 .bashrcse ejecuta en cada instancia del shell. Sin embargo, .bash_profilesolo se usa al iniciar sesión. De ahí la razón de los dos archivos separados.

.profilees 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_profilees específicamente para shells de inicio de sesión o shells ejecutados al iniciar sesión.


diferencia entre ~ / .profile y ~ / .bash_profile?
Lakesh

2
.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.
anzenketh

agregue esa declaración a su respuesta ... porque cuál es mi pregunta es ...
lakesh

¿Eh? Eso ni siquiera responde la pregunta?
Mikel
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.