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 ...
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:
En realidad, la primera de .bash_profile, .bash_login,.profile
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:
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:
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.
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.
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 ...
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 porbash
. Está destinado a comandos que son incompatibles con el shell Bourne estándar.fuente
.profile
. Por ejemplo,bash
yksh
pero nocsh
otcsh
. Yzsh
proporciona tantosh
ycsh
compatibilidad por lo que va a leer tanto.profile
y.login
, además dezsh
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 comosh
(por ejemplo,/bin/sh
es un enlace a/bin/bash
) o si se inicia con el--posix
indicador, intenta emularsh
y solo lee.profile
.Notas al pie:
.bash_profile
,.bash_login
,.profile
Ver también:
fuente
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:Su shell se ejecuta y, por defecto, cada shell tiene un archivo establecido para
login
ylogout
. Cuando inicia sesión en bash,~/.profile
se ejecuta y cuando ustedlogout
,~/.bash_logout
se ejecuta.~/.bash_history
El 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~/.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.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:
Nota: si no está
$ZDOTDIR
configurado, 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.
Nota: csh es viejo. Use tcsh en su lugar.
Korn Shell
~/.profile
Bourne Again SHell (BASH)
Es un shell muy, muy poderoso y nació bajo el proyecto GNU y bifurcado por Bourne Shell.
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.Bourne shell
Está muerto. Incluso cuando lo usas
man sh
, ves el manual dedash
. [Nota del editor: el bitdash
solo se aplica a Debian y distribuciones basadas en Debian como Ubuntu.]Tu respuesta
~/.bash_profile
trabajar bajo bash, pero~/.profile
trabajar bajo Bourne y Korn shell.fuente
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.fuente