Antworten:
Die Datei $HOME/.profile
wird von einer Reihe von Shells verwendet, darunter bash, sh, dash und möglicherweise andere.
Von der Bash-Manpage:
Wenn bash als interaktive Anmeldeshell aufgerufen wird, ... liest es zuerst Befehle aus der Datei / etc / profile und führt sie aus, falls diese Datei existiert. Nach dem Lesen dieser Datei sucht sie in dieser Reihenfolge nach ~ / .bash_profile, ~ / .bash_login und ~ / .profile und liest und führt Befehle von der ersten Datei aus, die vorhanden und lesbar ist.
csh und tcsh schauen sich das explizit nicht an, ~/.profile
aber diese Muscheln sind irgendwie antiquiert.
Run command as a login shell
. Sie müssen es auch entfernen ~/.bash_profile
oder als Quelle festlegen ~/.profile
.
$HOME/.profile
aus deinem Zsh heraus schöpfen .zshrc
. Ich neige dazu, alle meine tragbaren Shell-Dinge unterzubringen, .profile
und dann kann ich sie in jeder Umgebung teilen, zwischen denen ich vielleicht hüpfen möchte.
~/.profile
ist der richtige Ort für die Umgebungsvariable Definitionen und für nicht-grafische Programme , die Sie , wenn Sie sich in (zB ausgeführt werden sollen ssh-agent
, screen -m
). Es wird von Ihrer Login-Shell ausgeführt, wenn es sich um eine Bourne-Shell handelt (sh, ksh, bash). Zsh wird ~/.zprofile
stattdessen ausgeführt und Csh und tcsh werden ausgeführt ~/.login
.
Wenn Sie sich unter einem X-Display-Manager anmelden (xdm, gdm, kdm, ...), ~/.profile
hängt die Ausführung davon ab, wie Ihr Display-Manager und möglicherweise die Desktop-Umgebung von Ihrer Distribution konfiguriert wurden. Wenn Sie sich unter einer "benutzerdefinierten Sitzung" anmelden, wird diese normalerweise ausgeführt ~/.xsession
.
~/.bashrc
ist der richtige Ort für bash-spezifische Einstellungen wie Aliase, Funktionen, Shell-Optionen und Eingabeaufforderungen. Wie der Name schon sagt, ist es spezifisch für bash. csh hat ~/.cshrc
, ksh hat ~/.kshrc
und zsh hat <drumroll> ~/.zshrc
.
Siehe auch:
Unterschied zwischen .bashrc und .bash_profile
Welche Setup-Dateien sollten zum Einrichten von Umgebungsvariablen mit bash verwendet werden?
Zsh trifft nicht ~ / .profile
Es gibt keine gemeinsame Datei, aber Sie können jede Shell aus einer gemeinsamen Datei lesen lassen.
bash
liest aus .bash_profile
oder.bashrc
zsh
liest aus .zprofile
und .zshrc
ksh
liest aus .profile
oder$ENV
Also hier ist was ich tue:
~/.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)
Wenn Sie Root-Zugriff auf das System haben, können Sie es auch einrichten pam_env
.
Du kannst Geben
session optional pam_env.so user_envfile=.env
in der entsprechenden /etc/pam.d
Datei (zB /etc/pam.d/common-session
unter Debian) und dann, wenn sich der Benutzer anmeldet, PAM
werden Umgebungsvariablen von gelesen ~/.env
.
Beachten Sie, dass pam_env
grundsätzlich nur VAR=value
Einträge unterstützt werden .
Mehr Info:
Es gibt keine Umgebungskonfigurationsdatei für verschiedene Shells, da die Definition der Shells sogar spezifisch ist.
In csh verwenden Sie setenv
in bash export
, um sie zu definieren.
Wie auch immer, Sie könnten Ihre eigene Konfigurationsdatei schreiben und diese source
in die Punktedateien Ihrer Shells aufnehmen.