Respuestas:
El archivo $HOME/.profile
es 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, ~/.profile
pero esos shells son un poco anticuados.
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 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 ~/.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
.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 ZSH
No 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
# 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.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 admite VAR=value
entradas.
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 setenv
en bash export
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.