Odpowiedzi:
Plik $HOME/.profile
jest używany przez wiele powłok, w tym bash, sh, dash i ewentualnie inne.
Ze strony podręcznika użytkownika bash:
Gdy bash jest wywoływany jako interaktywna powłoka logowania, ... najpierw czyta i wykonuje polecenia z pliku / etc / profile, jeśli ten plik istnieje. Po odczytaniu tego pliku szuka ~ / .bash_profile, ~ / .bash_login i ~ / .profile, w tej kolejności, i odczytuje i wykonuje polecenia z pierwszego, który istnieje i jest czytelny.
csh i tcsh wyraźnie nie patrzą, ~/.profile
ale te powłoki są trochę przestarzałe.
Run command as a login shell
. Musisz także usunąć ~/.bash_profile
lub ustawić go jako źródło ~/.profile
.
$HOME/.profile
z wnętrza swojego Zsh .zshrc
. Mam tendencję do umieszczania wszystkich moich przenośnych rzeczy w powłoce, .profile
a następnie mogę dzielić się nimi w dowolnym środowisku, w którym mogę wskoczyć.
~/.profile
jest właściwym miejscem dla środowiska definicje zmiennych i programów graficznych, które nie mają być uruchamiane podczas logowania (np ssh-agent
, screen -m
). Jest wykonywany przez powłokę logowania, jeśli jest to powłoka typu Bourne'a (sh, ksh, bash). ~/.zprofile
Zamiast tego działa Zsh , a Csh i tcsh ~/.login
.
Jeśli logujesz się w X menedżerze wyświetlania (xdm, gdm, kdm, ...), to, czy ~/.profile
zostanie uruchomione, zależy od tego, jak menedżer wyświetlania i być może środowisko pulpitu zostały skonfigurowane przez twoją dystrybucję. Jeśli logujesz się w ramach „sesji niestandardowej”, zwykle się to wykonuje ~/.xsession
.
~/.bashrc
jest właściwym miejscem dla ustawień specyficznych dla bash, takich jak aliasy, funkcje, opcje powłoki i monity. Jak sama nazwa wskazuje, jest specyficzna dla bash; csh ma ~/.cshrc
, ksh ma ~/.kshrc
, a zsh ma <drumroll> ~/.zshrc
.
Zobacz także:
Różnica między .bashrc i .bash_profile
Których plików instalacyjnych należy użyć do skonfigurowania zmiennych środowiskowych za pomocą bash?
Zsh nie uderza ~ / .profile
Nie ma wspólnego pliku, ale możesz sprawić, by każda powłoka odczytała ze wspólnego pliku.
bash
czyta z .bash_profile
lub.bashrc
zsh
czyta z .zprofile
i .zshrc
ksh
czyta z .profile
lub$ENV
Oto co robię:
~/.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)
Jeśli masz dostęp do systemu root, innym sposobem jest skonfigurowanie pam_env
.
Możesz włożyć
session optional pam_env.so user_envfile=.env
w odpowiednim /etc/pam.d
pliku (np. /etc/pam.d/common-session
na Debianie), a następnie, gdy użytkownik się zaloguje, PAM
odczyta zmienne środowiskowe ~/.env
.
Pamiętaj, że w pam_env
zasadzie obsługuje tylko VAR=value
wpisy.
Więcej informacji:
Nie ma czegoś takiego jak plik konfiguracyjny środowiska dla różnych powłok, ponieważ jego powłoka określa sposób ich definiowania.
W csh używasz setenv
w bash, którego używasz export
do ich definiowania.
W każdym razie możesz napisać własny plik konfiguracyjny i dołączyć go source
do plików dot. Twoich powłok.