Réponses:
Le fichier $HOME/.profile
est 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 ~/.profile
mais ces coquilles sont un peu dépassées.
Run command as a login shell
. Vous devez également supprimer ~/.bash_profile
ou rendre le code source ~/.profile
.
$HOME/.profile
depuis votre Zsh .zshrc
. J'ai tendance à mettre tous mes objets de shell portables .profile
et ensuite je peux les partager dans n'importe quel environnement dans lequel je pourrais basculer.
~/.profile
est 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 ~/.zprofile
place, et Csh et tcsh sont exécutés ~/.login
.
Si vous vous connectez sous un gestionnaire d'affichage X (xdm, gdm, kdm, ...), ~/.profile
son 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
.
~/.bashrc
est 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 ~/.kshrc
et 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.
bash
lit à partir .bash_profile
ou.bashrc
zsh
lit de .zprofile
et .zshrc
ksh
lit à partir .profile
ou$ENV
Alors 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.d
fichier approprié (par exemple /etc/pam.d/common-session
sur Debian), puis lorsque l'utilisateur se connecte, PAM
lira les variables d'environnement à partir de ~/.env
.
Notez que, pam_env
fondamentalement, ne prend en charge que les VAR=value
entré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 setenv
en bash vous utilisez export
pour les définir.
Quoi qu'il en soit, vous pouvez écrire votre propre fichier de configuration et l'inclure source
dans les fichiers de points de vos shells.