Respuestas:
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.
Run command as a login shell. También debe eliminarlo ~/.bash_profileo hacerlo fuente ~/.profile.
$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.
~/.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.
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
.zloginademás de .zprofileque se ejecuta después .zshrc (pero solo para shells de inicio de sesión). Vea las preguntas frecuentes de ZSH
No hay un archivo común, pero puede hacer que cada shell se lea desde un archivo común.
bashlee de .bash_profileo.bashrczshlee de .zprofile y .zshrckshlee de .profileo$ENVEntonces 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.
Más información:
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 setenven bash exportpara definirlos.
De todos modos, podría escribir su propio archivo de configuración e incluirlo sourceen los archivos de puntos de sus shells.