ฉันพบ.bashrcไฟล์และต้องการทราบจุดประสงค์ / ฟังก์ชั่นของมัน มันใช้อย่างไรและเมื่อไหร่?
ฉันพบ.bashrcไฟล์และต้องการทราบจุดประสงค์ / ฟังก์ชั่นของมัน มันใช้อย่างไรและเมื่อไหร่?
คำตอบ:
.bashrcเป็นเชลล์สคริปต์ที่ Bash ทำงานเมื่อใดก็ตามที่เริ่มทำงานแบบโต้ตอบ มันเริ่มต้นเซสชั่นเปลือกโต้ตอบ คุณสามารถใส่คำสั่งใด ๆ ในไฟล์ที่คุณสามารถพิมพ์ได้ที่พรอมต์คำสั่ง
คุณวางคำสั่งที่นี่เพื่อตั้งค่าเชลล์เพื่อใช้ในสภาพแวดล้อมเฉพาะของคุณหรือเพื่อปรับแต่งสิ่งต่าง ๆ ตามความต้องการของคุณ สิ่งที่ต้องใส่ร่วมกัน.bashrcคือนามแฝงที่คุณต้องการให้มีอยู่เสมอ
.bashrcทำงานในทุก ๆการเปิดตัวเชลล์ ถ้าคุณพูด:
$ bash ; bash ; bash
จากนั้นกดCtrl-Dสามครั้ง.bashrcจะทำงานสามครั้ง แต่ถ้าคุณพูดแบบนี้แทน:
$ bash -c exit ; bash -c exit ; bash -c exit
จากนั้น.bashrcจะไม่ทำงานเลยเนื่องจาก-cทำให้การโทร Bash ไม่ใช่แบบโต้ตอบ เช่นเดียวกับเมื่อคุณเรียกใช้เชลล์สคริปต์จากไฟล์
ความคมชัด.bash_profileและ.profileสิ่งที่เรียกใช้เมื่อเริ่มต้นของเชลล์ล็อกอินใหม่ ( bash -l) คุณเลือกว่าจะให้คำสั่งเป็นแบบ.bashrcVS หรือไม่.bash_profileขึ้นอยู่กับว่าคุณต้องการให้มันรันครั้งเดียวหรือทุกครั้งที่เชลล์แบบโต้ตอบเริ่มทำงาน
ในฐานะตัวอย่างของนามแฝงที่ฉันต้องการใส่.bashrcคุณต้องการทำการPATHปรับเปลี่ยน.bash_profileแทนเนื่องจากโดยทั่วไปแล้วการเปลี่ยนแปลงเหล่านี้จะไม่ใช่idempotent :
export PATH="$PATH:/some/addition"
หากคุณใส่สิ่งนั้นลงไป.bashrcแทนทุกครั้งที่คุณเปิดใช้เชลล์ย่อยแบบโต้ตอบ:/some/additionจะถูกตรึงไว้ที่ส่วนท้ายของPATHอีกครั้งสร้างงานพิเศษสำหรับเชลล์เมื่อคุณพิมพ์คำสั่ง
คุณจะได้รับเปลือกทุบตีโต้ตอบใหม่เมื่อใดก็ตามที่คุณเปลือกออกของviด้วย:shยกตัวอย่างเช่น
.bashrcเมื่อเริ่มเป็นเชลล์การเข้าสู่ระบบ ซึ่งบางครั้งอาจจะนำไปสู่พฤติกรรมที่ไม่คาดคิด วิธีแก้ปัญหาตามปกติคือแหล่งที่มา.bashrcจาก.profileหรือ.bash_profileแทน
.bashrcไม่ได้มีไว้สำหรับการใช้งานโดยเชลล์อื่น ๆ จึงไม่ควรที่จะหาแหล่งที่มาจากเชลล์.profile(ซึ่งอาจใช้โดยbashเชลล์อื่นที่ไม่ใช่เชลล์)
source ~/.bashrcหรือ. ~/.bashrcหรือ[[ -f ~/.bashrc ]] && source. ~/.bashrcหรือ[ -f ~/.bashrc ] && source ~/.bashrcไม่ทำงาน?
.bashrcมันมีที่มาแน่นอน (ใช้คำสั่งที่แนะนำจากsuperuser.com/a/183980/128768 ) ปัญหาที่ผมต้องเผชิญเป็นจริงไม่ได้จัดหาhttps://github.com/junegunn/fzfผ่านทางคำสั่งนี้ภายใน:.bashrc source ~/.fzf.bashฉันเปิดอาคารผู้โดยสารแห่งใหม่แล้วCtrl+ และฉันได้รับR `__fzf_history__`bash: fzf: command not foundฉันมาด้วยตนเอง.bashrcและทางลัดคีย์เดียวกันจะเรียกใช้ fzf ตามที่คาดไว้ ขอโทษสำหรับเสียงที่นี่
วัตถุประสงค์ของ.bashrcไฟล์คือการให้สถานที่ที่คุณสามารถตั้งค่าตัวแปรฟังก์ชั่นและชื่อแทนกำหนดพรอมต์ (PS1) ของคุณและกำหนดการตั้งค่าอื่น ๆ ที่คุณต้องการใช้ทุกครั้งที่คุณเปิดหน้าต่างเทอร์มินัลใหม่
มันทำงานโดยการเรียกใช้ในแต่ละครั้งที่คุณเปิดหน้าต่างใหม่หรือเทอร์มินัล
คุณสามารถเห็นของฉันที่นี่(รูปที่มีการเน้นไวยากรณ์) :
HISTCONTROL=ignoreboth:erasedups HISTSIZE=100000 HISTFILESIZE=200000
ls --color=al > /dev/null 2>&1 && alias ls='ls -F --color=al' || alias ls='ls -G'
md () { [ $# = 1 ] && mkdir -p "$@" && cd "$@" || echo "Error - no directory passed!"; }
git_branch () { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'; }
HOST='\033[02;36m\]\h'; HOST=' '$HOST
TIME='\033[01;31m\]\t \033[01;32m\]'
LOCATION=' \033[01;34m\]`pwd | sed "s#\(/[^/]\{1,\}/[^/]\{1,\}/[^/]\{1,\}/\).*\(/[^/]\{1,\}/[^/]\{1,\}\)/\{0,1\}#\1_\2#g"`'
BRANCH=' \033[00;33m\]$(git_branch)\[\033[00m\]\n\$ '
PS1=$TIME$USER$HOST$LOCATION$BRANCH
PS2='\[\033[01;36m\]>'
set -o vi # vi at command line
export EDITOR=vim
test -f ~/.bash_aliases && . $_
test -f ~/.git-completion.bash && . $_
test -s ~/.autojump/etc/profile.d/autojump && . $_
[ ${BASH_VERSINFO[0]} -ge 4 ] && shopt -s autocd
[ -f /etc/bash_completion ] && ! shopt -oq posix && . /etc/bash_completion
[ -z $TMUX ] && export TERM=xterm-256color && exec tmux
export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$home/.rvm/scripts/rvm"
คำอธิบาย:
-1 ตั้งค่าไฟล์ประวัติของฉันเพื่อละเว้นรายการซ้ำและมีขนาดใหญ่กว่าค่าเริ่มต้น
-2 ตัวเลือกสีlsขึ้นอยู่กับว่าคุณใช้ linux หรือ OSX
-3 หรือไม่ ฟังก์ชัน " md" เพื่อสร้างและ cd ลงในไดเรกทอรีด้วยคำสั่งเดียว
-4 ค้นหาสาขา git ปัจจุบันหากอยู่ใน git repo และ ...
-5 -9 กำหนดพรอมต์ PS1 ที่ยอดเยี่ยมดังที่ใน
-10 ปรับปรุง PS2 prompt
-11 ตั้งค่า vi เป็นเอดิเตอร์ที่บรรทัดรับคำสั่ง
-12 ตั้งค่า vi เป็นตัวแก้ไขเริ่มต้น
-13 รัน.bash_aliasesไฟล์ของฉันถ้ามันมีอยู่
-14 เรียกใช้สคริปต์การทำให้สมบูรณ์ของแท็บ git (สำหรับรีโมทและสาขา) หากมีอยู่
-15 ดำเนินการ autojump ถ้ามี
-16 อนุญาตให้ cd'ing โดยไม่ต้องพิมพ์ส่วนซีดีถ้ารุ่นทุบตี> = 4
-17 เรียกใช้งานสคริปต์การเติมเต็มของ bash หากมี
-18 ใช้ TMUX หากมี
-19 เพิ่ม rvm ใน PATH ของฉัน
-20 ใช้ rvm หากมีอยู่
ฉันทำแบบพกพานี้เพื่อให้ทำงานบนเครื่อง linux หรือ OSX ใด ๆ ของฉันโดยไม่มีการปรับแต่ง - ดังนั้นจึงมีการทดสอบจำนวนหนึ่งสำหรับการแสดงตนก่อนที่จะใช้ฟังก์ชั่นและสคริปต์อื่น ๆ
นอกจากนี้ยังทำให้การใช้ไฟล์ทั้งหมดในเครื่องใหม่ง่ายขึ้นโดยไม่มีปัญหาที่ส่งผลต่อการเปิดหน้าต่างเทอร์มินัลใหม่
มันเป็นbashไฟล์ปรับแต่ง
เชลล์แบบอินเทอร์แอกทีฟ (ไม่ใช่การเข้าสู่ระบบ) ดังนั้นการกำหนดค่าจะอ่านจากไฟล์เหล่านี้:
$HOME/.bashrcสำหรับเชลล์การเข้าสู่ระบบการกำหนดค่าจะถูกอ่านจากไฟล์เหล่านี้:
/etc/profile (มีที่มาเสมอ)$HOME/.bash_profile (ส่วนที่เหลือของไฟล์เหล่านี้จะถูกตรวจสอบตามลำดับจนกว่าจะพบหนึ่งแล้วไม่มีคนอื่นอ่าน)$HOME/.bash_login$HOME/.profileภาพประกอบง่าย ๆ ว่าโหลดเมื่อไรอยู่ในรูปภาพด้านล่าง
ฉันเพิ่มechoของฉัน.bashrcและ.bash_profile
ดูman bashข้อมูลเพิ่มเติม
.bashrcและแยกความแตกต่างระหว่าง.bashrcและ.bash_profileที่ครอบคลุมเนื้อหาของคำตอบของคุณ อย่าท้อแท้คุณพยายามอย่างซื่อสัตย์ แต่พยายามเน้นการตอบคำถามด้วยเนื้อหาบางส่วนที่ไม่ครอบคลุมโดยคำตอบอื่น ๆ