जवाबों:
फ़ाइल $HOME/.profileका उपयोग कई गोले द्वारा किया जाता है, जिसमें बैश, श, डैश और संभवतः अन्य शामिल हैं।
बैश मैन पेज से:
जब बैश को एक इंटरेक्टिव लॉगिन शेल के रूप में आमंत्रित किया जाता है, ... यह पहले फाइल / etc / प्रोफाइल से कमांड को पढ़ता है और निष्पादित करता है, यदि यह फाइल मौजूद है। उस फ़ाइल को पढ़ने के बाद, यह उस क्रम में ~ / .bash_profile, ~ / .bash_login और ~ / .profile की तलाश करता है, और पहले मौजूद से कमांड पढ़ता और कार्यान्वित करता है जो कि पढ़ने योग्य है।
csh और tcsh स्पष्ट रूप से नहीं दिखते हैं, ~/.profileलेकिन उन गोले थोड़े प्राचीन हैं।
Run command as a login shell। आपको ~/.bash_profileइसे हटाने या इसे स्रोत बनाने की भी आवश्यकता है ~/.profile।
$HOME/.profileअपने Zsh के अंदर से भी स्रोत बना सकते .zshrcहैं। मैं अपनी सभी पोर्टेबल शेल चीजों को अंदर रखना चाहता हूं .profileऔर फिर मैं इसे किसी भी वातावरण के आसपास साझा कर सकता हूं, जिनके बीच मैं आशा कर सकता हूं।
~/.profileपर्यावरण चर परिभाषाओं के लिए और गैर-ग्राफिकल कार्यक्रमों के लिए सही जगह है जो आप लॉग इन करते समय चलाना चाहते हैं (जैसे ssh-agent, screen -m)। यदि यह एक बॉर्न-शैली शेल (श, ksh, bash) है, तो इसे आपके लॉगिन शेल द्वारा निष्पादित किया जाता है। ~/.zprofileइसके बजाय Zsh चलता है , और Csh और tsh चला जाता है ~/.login।
यदि आप एक एक्स डिस्प्ले मैनेजर (एक्सडीएम, जीडीएम, केडीएम, ...) के तहत लॉग इन करते हैं, तो क्या ~/.profileचलाया जाता है यह निर्भर करता है कि आपके डिस्ट्रीब्यूशन मैनेजर और शायद डेस्कटॉप वातावरण आपके वितरण द्वारा कैसे कॉन्फ़िगर किए गए थे। यदि आप एक "कस्टम सत्र" के तहत लॉग इन करते हैं, जो आमतौर पर निष्पादित होता है ~/.xsession।
~/.bashrcयह बैश-विशिष्ट सेटिंग्स के लिए सही जगह है, जैसे कि उपनाम, फ़ंक्शन, शेल विकल्प और संकेत। जैसा कि नाम इंगित करता है, यह बैश करने के लिए विशिष्ट है; csh है ~/.cshrc, ksh है ~/.kshrc, और zsh है <ढोलकिया> ~/.zshrc।
इन्हें भी देखें:
.bashrc और .bash_profile के बीच का अंतर
बैश के साथ पर्यावरण चर स्थापित करने के लिए कौन सी सेटअप फ़ाइलों का उपयोग किया जाना चाहिए?
Zsh नहीं मार ~ / .profile
.zloginइसके अलावा करने के लिए .zprofileजो चलाता है के बाद .zshrc (लेकिन केवल लॉगिन गोले के लिए)। देखें ZSH पूछे जाने वाले प्रश्न
कोई आम फ़ाइल नहीं है, लेकिन आप प्रत्येक शेल को सामान्य फ़ाइल से पढ़ सकते हैं।
bash.bash_profileया से पढ़ता है.bashrczshसे और पढ़ता है.zprofile .zshrcksh.profileया से पढ़ता है$ENVतो यहाँ मैं क्या करूँ:
~/.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)
यदि आपके पास सिस्टम तक रूट एक्सेस है, तो दूसरा तरीका सेट अप करना है pam_env।
आप रख सकते हैं
session optional pam_env.so user_envfile=.env
प्रासंगिक /etc/pam.dफ़ाइल में (जैसे /etc/pam.d/common-sessionडेबियन पर), और फिर जब उपयोगकर्ता लॉग इन करता है, PAMतो पर्यावरण चर को पढ़ेगा ~/.env।
ध्यान दें कि pam_envमूल रूप से केवल VAR=valueप्रविष्टियों का समर्थन करता है ।
और जानकारी:
विभिन्न गोले के लिए एक पर्यावरण विन्यास फाइल जैसी कोई चीज नहीं है, क्योंकि इसका विशिष्ट शेल भी परिभाषित है कि वे कैसे परिभाषित हैं।
Csh में आप setenvबैश में उपयोग exportकरते हैं आप उन्हें परिभाषित करने के लिए उपयोग करते हैं।
वैसे भी आप अपनी खुद की कॉन्फिग फाइल लिख सकते हैं और इसे sourceअपने गोले के डॉटफाइल्स में शामिल कर सकते हैं।