ไฟล์. bashrc คืออะไร


100

Unix shells เมื่อเริ่มอ่าน.bashrcไฟล์และรันคำสั่งที่เขียนไว้ ไฟล์นี้คืออะไรและมันทำงานอย่างไร


2
ลองเปิดไฟล์ในโปรแกรมแก้ไขข้อความ - มันเป็นข้อความธรรมดา
Will Bickford

คำตอบ:


66

ที่จริงแล้วมันbashอ่าน.bashrc(และ/etc/bash.bashrc) โดยเฉพาะ มีเปลือกหอยที่แตกต่างกันมากมาย

หน้าคนทุบตี (โดยไบรอันฟ็อกซ์และเมย์เชษฐ์; ยังหน้าข้อมูล "ทุบตีเริ่มต้น Files" ) คือการอ้างอิงเผด็จการ:

เมื่อเชลล์เชิงโต้ตอบที่ไม่ใช่เชลล์ล็อกอินเริ่มทำงาน bash จะอ่านและดำเนินการคำสั่งจาก~/.bashrcหากไฟล์นั้นมีอยู่ สิ่งนี้อาจถูกยับยั้งโดยใช้--norcตัวเลือก ตัวเลือกไฟล์จะบังคับทุบตีอ่านและรันคำสั่งจากไฟล์แทน--rcfile~/.bashrc

เมื่อ bash เริ่มต้นแบบไม่โต้ตอบเพื่อรันเชลล์สคริปต์ตัวอย่างเช่นมันจะค้นหาตัวแปรBASH_ENVในสภาพแวดล้อมขยายค่าของมันถ้ามันปรากฏขึ้นที่นั่นและใช้ค่าที่ขยายเป็นชื่อของไฟล์เพื่ออ่านและดำเนินการ Bash จะทำงานเหมือนกับว่าคำสั่งต่อไปนี้ถูกดำเนินการ:

if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi  

แต่ค่าของPATHตัวแปรไม่ได้ถูกใช้เพื่อค้นหาชื่อไฟล์

ไฟล์นี้เป็นเพียงคำสั่งของเชลล์ โดยทั่วไปจะใช้เพื่อเปลี่ยนพรอมต์ตั้งค่าตัวแปรสภาพแวดล้อมและกำหนดโพรซีเดอร์เชลล์ โดยปกติแล้วไฟล์.profileจะถูกใช้เพื่อจุดประสงค์นี้ แต่bashมีส่วนขยายจำนวนมากที่ต้องการไฟล์เริ่มต้นของตนเองสำหรับผู้ใช้ที่ต้องการใส่bashismsในไฟล์เริ่มต้น

" ไม่ใช่เชลล์การเข้าสู่ระบบ " หมายถึงสิ่งต่าง ๆ เช่นการเปิดตัวสคริปต์และโดยปกติแล้วเทอร์มินัล windows จะเริ่มต้นโดยตัวจัดการหน้าต่าง บางครั้งฉันจะตั้งค่าระบบ * ระวังจะมี.bashrcและแหล่งที่มาเพียงBASH_ENV .profileตราบใดที่คุณไม่หลงทางนอกคำสั่งเชลล์ POSIX คุณก็จะได้ค่าเริ่มต้นเหมือนกันในเชลล์ใด ๆ

มันมีคุณค่าอย่างยิ่งเมื่อshเป็นจริงbashซึ่งบางครั้งเกิดขึ้น หากต้องการใช้สิ่งนี้:

. .profile

เหตุผลหนึ่งที่ซับซ้อนเช่นนี้ก็เพราะว่าบางครั้งคนใส่สิ่งที่สร้างผลลัพธ์ลงในไฟล์เริ่มต้นของเชลล์หรือตั้งค่าพรอมต์โดยไม่มีเงื่อนไข สิ่งนี้ทำให้เกิดปัญหามากมายเมื่อเรียกใช้โปรแกรมเชลล์และคำสั่ง backtick ภายในภาษาไม่ต้องพูดถึงsystem(3)จากโปรแกรม C bashผมคิดว่าวิธีการเริ่มต้นใช้งานได้รับการออกแบบให้มีหนึ่งไฟล์ที่การตั้งค่าเอาต์พุตและพรอมต์นั้นเป็นปกติและหนึ่งไฟล์ที่ไม่ได้เป็นเช่นนั้น โดยปกติแล้วการทดสอบรันไทม์จะทำเพื่อแยกความแตกต่างระหว่างการโต้ตอบตัวอย่างเช่นการตรวจสอบเพื่อดูว่ามีการตั้งค่าให้


คำตอบที่ดี. ใบเสนอราคาเพียงบางส่วน: ไฟล์เป็นเพียงคำสั่งเชลล์ โดยทั่วไปจะใช้เพื่อเปลี่ยนพรอมต์ตั้งค่าตัวแปรสภาพแวดล้อมและกำหนดโพรซีเดอร์เชลล์
smwikipedia

2
ไม่มีใครรู้ว่าส่วน rc ของ. bashrc / .zshrc หมายถึงอะไร
WORMSS


บางที rc หมายถึงการกำหนดค่ารันไทม์
Mike Diehn

12

เมื่อ Bash เริ่มทำงานคำสั่งจะดำเนินการกับสคริปต์ที่แตกต่างหลากหลาย

เมื่อ Bash ถูกเรียกใช้เป็นเชลล์ล็อกอินแบบโต้ตอบอันดับแรกจะอ่านและดำเนินการคำสั่งจากไฟล์ / etc / profile หากไฟล์นั้นมีอยู่ หลังจากอ่านไฟล์นั้นจะค้นหา ~ / .bash_profile, ~ / .bash_login และ ~ / .profile ตามลำดับและอ่านและเรียกใช้คำสั่งจากไฟล์แรกที่มีอยู่และอ่านได้

เมื่อล็อกอินเชลล์ออก Bash จะอ่านและดำเนินการคำสั่งจากไฟล์ ~ / .bash_logout หากมีอยู่

เมื่อเชลล์เชิงโต้ตอบที่ไม่ใช่เชลล์ล็อกอินเริ่มทำงาน Bash จะอ่านและดำเนินการคำสั่งจาก ~ / .bashrc หากไฟล์นั้นมีอยู่ สิ่งนี้อาจถูกยับยั้งโดยใช้ตัวเลือก --norc ตัวเลือกไฟล์ --rcfile จะบังคับให้ Bash อ่านและดำเนินการคำสั่งจากไฟล์แทน ~ / .bashrc

http://en.wikipedia.org/wiki/Bash_(Unix_shell)

นี่คือเทคนิคและเคล็ดลับ:

http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html

ให้เราลองตั้งค่าพรอมต์เพื่อให้สามารถแสดงวันที่และชื่อโฮสต์วันนี้:

PS1="\d \h $ "

1
เป็นเพราะเหตุใด.profileหลังจากที่.bash_profile? ตรรกะใด ๆ
Pacerier

10

มันควรมีคำสั่ง "การเริ่มต้น" หลากหลายสำหรับเชลล์ของคุณเช่น:

  • การสร้างชื่อแทนที่มีประโยชน์ (ตัวอย่างalias ll='ls -l')
  • การเพิ่มไดเรกทอรีไปยัง PATH
  • การตั้งค่าตัวแปรสภาพแวดล้อมใหม่

นามแฝงคืออะไร
สับปะรด

2
@pineapple: นามแฝงเป็นวิธีเรียกใช้คำสั่งซึ่งอาจมีความยาวโดยมีคำสั่งที่สั้นกว่า ตัวอย่างเช่นนามแฝงll='ls -l'ให้คุณพิมพ์llเพื่อรันls -lคำสั่ง
Wuffers
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.