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
.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 porbash. Está destinado a comandos que son incompatibles con el shell Bourne estándar.fuente
.profile. Por ejemplo,bashykshpero nocshotcsh. Yzshproporciona tantoshycshcompatibilidad por lo que va a leer tanto.profiley.login, además dezsharchivos punto específico.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 comosh(por ejemplo,/bin/shes un enlace a/bin/bash) o si se inicia con el--posixindicador, intenta emularshy solo lee.profile.Notas al pie:
.bash_profile,.bash_login,.profileVer 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_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
loginylogout. Cuando inicia sesión en bash,~/.profilese ejecuta y cuando ustedlogout,~/.bash_logoutse ejecuta.~/.bash_historyEl archivo mantiene su comando de entrada.Archivo de inicialización en cada shell
TENEX C shell
~/.loginCuando inicias sesión~/.logoutCuando cierre sesión~/.tcshrcigual que~./bashrcen bashPuede 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.
Nota: csh es viejo. Use tcsh en su lugar.
Korn Shell
~/.profileBourne 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 dedash. [Nota del editor: el bitdashsolo se aplica a Debian y distribuciones basadas en Debian como Ubuntu.]Tu respuesta
~/.bash_profiletrabajar bajo bash, pero~/.profiletrabajar 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
.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.fuente