Unix shells เมื่อเริ่มอ่าน.bashrc
ไฟล์และรันคำสั่งที่เขียนไว้ ไฟล์นี้คืออะไรและมันทำงานอย่างไร
Unix shells เมื่อเริ่มอ่าน.bashrc
ไฟล์และรันคำสั่งที่เขียนไว้ ไฟล์นี้คืออะไรและมันทำงานอย่างไร
คำตอบ:
ที่จริงแล้วมัน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
ผมคิดว่าวิธีการเริ่มต้นใช้งานได้รับการออกแบบให้มีหนึ่งไฟล์ที่การตั้งค่าเอาต์พุตและพรอมต์นั้นเป็นปกติและหนึ่งไฟล์ที่ไม่ได้เป็นเช่นนั้น โดยปกติแล้วการทดสอบรันไทม์จะทำเพื่อแยกความแตกต่างระหว่างการโต้ตอบตัวอย่างเช่นการตรวจสอบเพื่อดูว่ามีการตั้งค่าให้
เมื่อ 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 $ "
.profile
หลังจากที่.bash_profile
? ตรรกะใด ๆ
มันควรมีคำสั่ง "การเริ่มต้น" หลากหลายสำหรับเชลล์ของคุณเช่น:
alias ll='ls -l'
)ll='ls -l'
ให้คุณพิมพ์ll
เพื่อรันls -l
คำสั่ง