Réponses:
Le fichier $HOME/.profileest utilisé par un certain nombre d'obus, notamment bash, sh, dash et éventuellement d'autres.
De la page de manuel de bash:
Lorsque bash est appelé en tant que shell de connexion interactif, ... il lit et exécute d'abord les commandes du fichier / etc / profile, si ce fichier existe. Après avoir lu ce fichier, il recherche ~ / .bash_profile, ~ / .bash_login et ~ / .profile, dans cet ordre, puis lit et exécute les commandes à partir de la première qui existe et est lisible.
csh et tcsh ne regardent pas explicitement ~/.profilemais ces coquilles sont un peu dépassées.
Run command as a login shell. Vous devez également supprimer ~/.bash_profileou rendre le code source ~/.profile.
$HOME/.profiledepuis votre Zsh .zshrc. J'ai tendance à mettre tous mes objets de shell portables .profileet ensuite je peux les partager dans n'importe quel environnement dans lequel je pourrais basculer.
~/.profileest le bon endroit pour les définitions de variable d'environnement et pour les programmes non graphiques que vous voulez exécuter lorsque vous vous connectez (par exemple ssh-agent, screen -m). Il est exécuté par votre shell de connexion s'il s'agit d'un shell de type Bourne (sh, ksh, bash). Zsh s'exécute à la ~/.zprofileplace, et Csh et tcsh sont exécutés ~/.login.
Si vous vous connectez sous un gestionnaire d'affichage X (xdm, gdm, kdm, ...), ~/.profileson exécution dépend de la configuration de votre gestionnaire d'affichage et peut-être de l'environnement de bureau par votre distribution. Si vous vous connectez sous une «session personnalisée», cela s'exécute généralement ~/.xsession.
~/.bashrcest le bon endroit pour les paramètres spécifiques à bash, tels que les alias, les fonctions, les options du shell et les invites. Comme son nom l'indique, il est spécifique à bash; csh a ~/.cshrc, ksh a ~/.kshrcet zsh a <roulement de tambour> ~/.zshrc.
Voir aussi:
Différence entre .bashrc et .bash_profile
Quels fichiers d'installation doivent être utilisés pour configurer des variables d'environnement avec bash?
Zsh ne frappe pas ~ / .profile
Il n'y a pas de fichier commun, mais vous pouvez faire en sorte que chaque shell lise depuis un fichier commun.
bashlit à partir .bash_profileou.bashrczshlit de .zprofile et .zshrckshlit à partir .profileou$ENVAlors voici ce que je fais:
~/.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 vous avez un accès root au système, vous pouvez également le configurer pam_env.
Tu peux mettre
session optional pam_env.so user_envfile=.env
dans le /etc/pam.dfichier approprié (par exemple /etc/pam.d/common-sessionsur Debian), puis lorsque l'utilisateur se connecte, PAMlira les variables d'environnement à partir de ~/.env.
Notez que, pam_envfondamentalement, ne prend en charge que les VAR=valueentrées.
Plus d'informations:
Il n’existe pas de fichier de configuration d’environnement pour différents shells, car il est même spécifique à leur shell comment ils sont définis.
En csh vous utilisez setenven bash vous utilisez exportpour les définir.
Quoi qu'il en soit, vous pouvez écrire votre propre fichier de configuration et l'inclure sourcedans les fichiers de points de vos shells.