เป็น~/.bashrc สถานที่เดียวในการระบุตัวแปรสภาพแวดล้อมเฉพาะผู้ใช้นามแฝงการปรับเปลี่ยนPATHตัวแปร ฯลฯ ?
ฉันถามเพราะดูเหมือนว่า~/.bashrcจะเป็นbash- แบบเดียว แต่มีกระสุนชนิดอื่นอยู่ด้วย ...
เป็น~/.bashrc สถานที่เดียวในการระบุตัวแปรสภาพแวดล้อมเฉพาะผู้ใช้นามแฝงการปรับเปลี่ยนPATHตัวแปร ฯลฯ ?
ฉันถามเพราะดูเหมือนว่า~/.bashrcจะเป็นbash- แบบเดียว แต่มีกระสุนชนิดอื่นอยู่ด้วย ...
คำตอบ:
ไฟล์$HOME/.profileถูกใช้โดยเชลล์จำนวนหนึ่งรวมถึง bash, sh, dash และอื่น ๆ
จากหน้าคนทุบตี:
เมื่อ bash ถูกเรียกใช้เป็นเชลล์ล็อกอินแบบโต้ตอบ ... ก่อนอื่นให้อ่านและดำเนินการคำสั่งจากไฟล์ / etc / profile หากไฟล์นั้นมีอยู่ หลังจากอ่านไฟล์นั้นจะค้นหา ~ / .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) ถูกเรียกใช้งานโดยเชลล์ล็อกอินของคุณหากเป็นเชลล์สไตล์ Bourne (sh, ksh, bash) zsh ทำงาน~/.zprofileแทนและ CSH ~/.loginและเรียกใช้
หากคุณเข้าสู่ระบบภายใต้ตัวจัดการการแสดงผล X (xdm, gdm, kdm, ... ) การ~/.profileรันขึ้นอยู่กับว่าตัวจัดการการแสดงผลของคุณและสภาพแวดล้อมเดสก์ท็อปอาจถูกกำหนดค่าโดยการกระจายของคุณ หากคุณเข้าสู่ระบบภายใต้“เซสชั่นที่กำหนดเอง” ~/.xsessionที่จะดำเนินการ
~/.bashrcเป็นสถานที่ที่เหมาะสมสำหรับการตั้งค่าเฉพาะทุบตีเช่นนามแฝงฟังก์ชันตัวเลือกเชลล์และพรอมต์ ตามชื่อบ่งชี้มันเป็นเฉพาะกับทุบตี; csh มี~/.cshrc, ksh มี~/.kshrcและ zsh มี ~/.zshrc<รัวกลอง>
ดูเพิ่มเติม:
ความแตกต่างระหว่าง. bashrc และ. bash_profile
ไฟล์การติดตั้งใดที่ควรใช้สำหรับการตั้งค่าตัวแปรสภาพแวดล้อมด้วย bash
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ใน Debian) และจากนั้นเมื่อผู้ใช้บันทึกในจะอ่านจากตัวแปรสภาพแวดล้อมPAM~/.env
โปรดทราบว่าpam_envโดยทั่วไปรองรับเฉพาะVAR=valueรายการเท่านั้น
ข้อมูลเพิ่มเติม:
ไม่มีสิ่งใดที่เหมือนกับไฟล์ปรับแต่งสภาพแวดล้อมสำหรับเชลล์ที่แตกต่างกันเพราะแม้แต่เชลล์จะระบุวิธีที่กำหนดไว้
ใน csh คุณใช้setenvใน bash คุณใช้exportเพื่อกำหนดพวกเขา
อย่างไรก็ตามคุณสามารถเขียนไฟล์ปรับแต่งของคุณเองและรวมไว้sourceใน dotfiles ของเชลล์ได้