El archivo $HOME/.profilees utilizado por varios shells, incluidos bash, sh, dash y posiblemente otros.
Desde la página de manual de bash:
Cuando se invoca bash como un shell de inicio de sesión interactivo, ... primero lee y ejecuta comandos del archivo / etc / profile, si ese archivo existe. Después de leer ese archivo, busca ~ / .bash_profile, ~ / .bash_login y ~ / .profile, en ese orden, y lee y ejecuta comandos del primero que existe y es legible.
csh y tcsh explícitamente no miran, ~/.profilepero esos shells son un poco anticuados.
Zsh por defecto no lee .profile. Es por eso que eliminé mi respuesta anterior indicando esto. Zsh solo lee .profile cuando es invocado por un enlace simbólico llamado sh.
fschmitt
10
tcsh sigue siendo popular en algunos entornos.
Maciej Piechotka 13/10/10
1
fschmitt: gracias por la corrección; fijo. Maciej Piechotka: No tengo dudas de que es cierto; sin embargo, también es posible (aunque complicado) crear scripts * rc que importen otros scripts rc particulares en función del shell en el que se ejecutan.
msw
1
Para que esta forma funcione, los usuarios deben asegurarse de que cada shell sea un shell de inicio de sesión. Por ejemplo, en Gnome Terminal, vaya a Perfil -> Título y comando, y habilite Run command as a login shell. También debe eliminarlo ~/.bash_profileo hacerlo fuente ~/.profile.
Mikel
@fschmitt También puede obtener fuentes $HOME/.profiledesde el interior de su Zsh .zshrc. Tiendo a colocar todas mis cosas de shell portátiles .profiley luego puedo compartirlas en cualquier entorno en el que me encuentre.
Benjamin R
56
~/.profilees el lugar adecuado para las definiciones de variables de entorno y para los programas no gráficos que desea ejecutar cuando inicia sesión (por ejemplo ssh-agent, screen -m). Su shell de inicio de sesión lo ejecuta si es un shell de estilo Bourne (sh, ksh, bash). Zsh se ejecuta en su ~/.zprofilelugar, y Csh y tcsh se ejecutan ~/.login.
Si inicia sesión con un administrador de pantalla X (xdm, gdm, kdm, ...), si ~/.profilese ejecuta depende de cómo su distribución configuró su administrador de pantalla y quizás el entorno de escritorio. Si inicia sesión en una "sesión personalizada", normalmente se ejecuta ~/.xsession.
~/.bashrces el lugar adecuado para configuraciones específicas de bash, como alias, funciones, opciones de shell y mensajes. Como su nombre indica, es específico de bash; csh tiene ~/.cshrc, ksh tiene ~/.kshrcy zsh tiene <drumroll> ~/.zshrc.
No olvide que zsh también tiene, .zloginademás de .zprofileque se ejecuta después.zshrc (pero solo para shells de inicio de sesión). Vea las preguntas frecuentes de ZSH
Geeb el
21
No hay un archivo común, pero puede hacer que cada shell se lea desde un archivo común.
bashlee de .bash_profileo.bashrc
zshlee de .zprofiley.zshrc
kshlee de .profileo$ENV
Entonces esto es lo que hago:
~/.env
# Put environment variables here, e.g.
PATH=$PATH:$HOME/bin
~/.shrc
test -f "$HOME/.env"&&."$HOME/.env"# Put interactive shell setup here, e.g.
alias ll='ls -l'
PS1='$PWD$ 'set-o emacs
~/.bashrc
test -f ~/.shrc && source ~/.shrc
# Put any bash-specific settings here, e.g.
HISTFILE=~/.bash_history
shopt -s extglob
IGNOREEOF=yes
~/.zshenv
# Put any zsh-specific settings for non-interactive and interactive sessions, e.g.
setopt braceexpand
setopt promptsubst
setopt shwordsplit
~/.zshrc
test -f ~/.shrc && source ~/.shrc
# Put any zsh-specific interactive settings here, e.g.
HISTFILE=~/.zsh_history
setopt ignoreeof
~/.profile
# Interactive sub-shells source .env, unless this is bash or zsh,# because they already sourced .env in .bashrc or .zshrc.if test -z "$BASH_VERSION"-a -z "$ZSH_VERSION"|| test -n "$BASH_VERSION"-a \( "${BASH##*/}"="sh" \)
then
test -f "$HOME"/.env &&."$HOME"/.env
fi# The name is confusing, but $ENV is ksh's config file for interactive sessions,# so it's equivalent to .bashrc or .zshrc.# Putting this here makes running an interactive ksh from any login shell work.
test -f "$HOME"/.shrc && export ENV="$HOME"/.shrc
# Put any login shell specific commands here, e.g.
ssh-add
stty -ixon
~/.bash_profile
source ~/.bashrc
source ~/.profile
~/.zlogin
# zsh sources .zshrc automatically, only need to source .profile
source ~/.profile
~/.zprofile
(empty)
Si tiene acceso de root al sistema, otra forma es configurarlo pam_env.
Puedes poner
session optional pam_env.so user_envfile=.env
en el /etc/pam.darchivo correspondiente (por ejemplo, /etc/pam.d/common-sessionen Debian), y luego cuando el usuario inicie sesión, PAMleerá las variables de entorno ~/.env.
Tenga en cuenta que pam_envbásicamente solo admite VAR=valueentradas.
Run command as a login shell
. También debe eliminarlo~/.bash_profile
o hacerlo fuente~/.profile
.$HOME/.profile
desde el interior de su Zsh.zshrc
. Tiendo a colocar todas mis cosas de shell portátiles.profile
y luego puedo compartirlas en cualquier entorno en el que me encuentre.~/.profile
es el lugar adecuado para las definiciones de variables de entorno y para los programas no gráficos que desea ejecutar cuando inicia sesión (por ejemplossh-agent
,screen -m
). Su shell de inicio de sesión lo ejecuta si es un shell de estilo Bourne (sh, ksh, bash). Zsh se ejecuta en su~/.zprofile
lugar, y Csh y tcsh se ejecutan~/.login
.Si inicia sesión con un administrador de pantalla X (xdm, gdm, kdm, ...), si
~/.profile
se ejecuta depende de cómo su distribución configuró su administrador de pantalla y quizás el entorno de escritorio. Si inicia sesión en una "sesión personalizada", normalmente se ejecuta~/.xsession
.~/.bashrc
es el lugar adecuado para configuraciones específicas de bash, como alias, funciones, opciones de shell y mensajes. Como su nombre indica, es específico de bash; csh tiene~/.cshrc
, ksh tiene~/.kshrc
y zsh tiene <drumroll>~/.zshrc
.Consulte también:
Diferencia entre .bashrc y .bash_profile
¿Qué archivos de configuración deben usarse para configurar variables de entorno con bash?
Zsh no golpea ~ / .profile
fuente
.zlogin
además de.zprofile
que se ejecuta después.zshrc
(pero solo para shells de inicio de sesión). Vea las preguntas frecuentes de ZSHNo hay un archivo común, pero puede hacer que cada shell se lea desde un archivo común.
bash
lee de.bash_profile
o.bashrc
zsh
lee de.zprofile
y.zshrc
ksh
lee de.profile
o$ENV
Entonces esto es lo que hago:
~/.env
~/.shrc
~/.bashrc
~/.zshenv
~/.zshrc
~/.profile
~/.bash_profile
~/.zlogin
~/.zprofile
Si tiene acceso de root al sistema, otra forma es configurarlo
pam_env
.Puedes poner
en el
/etc/pam.d
archivo correspondiente (por ejemplo,/etc/pam.d/common-session
en Debian), y luego cuando el usuario inicie sesión,PAM
leerá las variables de entorno~/.env
.Tenga en cuenta que
pam_env
básicamente solo admiteVAR=value
entradas.Más información:
fuente
No existe tal cosa como un archivo de configuración de entorno para diferentes shells, porque incluso es específico de la shell cómo se definen.
En csh usas
setenv
en bashexport
para definirlos.De todos modos, podría escribir su propio archivo de configuración e incluirlo
source
en los archivos de puntos de sus shells.fuente