โดยปกติแล้วจะbash
แหล่ง~/.bashrc
ไฟล์สคริปต์เริ่มต้นของคุณสำหรับเชลล์แบบโต้ตอบและไม่ใช่การเข้าสู่ระบบเท่านั้น
โดยปกติแล้วจะbash
แหล่งที่มาของ~/.profile
ไฟล์สคริปต์เริ่มต้นของคุณสำหรับเปลือกเข้าสู่ระบบแบบโต้ตอบ
โดยปกติ Terminal.app จะถือว่าหน้าต่างเทอร์มินัลใหม่เป็นเชลล์ล็อกอินแบบโต้ตอบ
ดังนั้นในสถานการณ์ปกติคุณ~/.profile
จะได้รับการอ่านและดำเนินการเท่านั้น คุณ~/.bashrc
ไม่เคยได้รับการอ่านและดำเนินการ
เพื่อแก้ปัญหานี้ฉันมักจะสร้างสคริปต์เริ่มต้นเชลล์ชื่อ~/.profile
(หากยังไม่มีอยู่) และฉันเพิ่มคำสั่งต่อไปนี้ลงในไฟล์ดังกล่าวเพื่อตรวจสอบว่ามี~/.bashrc
ไฟล์อยู่หรือไม่และอ่านจากแหล่งที่มาดำเนินการภายในกระบวนการเชลล์ปัจจุบันไม่ใช่ subshell) หากมีอยู่:
test -f ~/.bashrc && source ~/.bashrc
การสร้างใหม่ตามที่ร้องขอ:
แอป Terminal ของ Mac OS X จะเรียกใช้เชลล์ของคุณ ( bash
) ในโหมด "เข้าสู่ระบบ" เมื่อมีการเรียกใช้ในโหมดเข้าสู่ระบบก็ไม่ได้อ่านbash
/ ดำเนินการ ~/.bashrc
แต่จะอ่านและดำเนินการ~/.profile
แทน หากคุณต้องการใส่สิ่งต่าง ๆ ลงในนั้น~/.bashrc
และให้พวกเขาอ่านและดำเนินการในหน้าต่าง Terminal ใหม่ทุกครั้งคุณจะต้องสร้างเชลล์สคริปต์ไฟล์ชื่อ~/.profile
และให้ไฟล์นั้นมีคำสั่งที่ค้นหา~/.bashrc
และอ่านและดำเนินการ
ในกรณีที่คำกริยา "source" โยนคุณออก: "sourcing" ไฟล์สคริปต์เชลล์คือเมื่อเชลล์ (เช่นbash
) อ่านคำสั่งเชลล์จากไฟล์และเรียกใช้คำสั่งเหล่านั้นในกระบวนการเชลล์ปัจจุบันจึงส่งผลกระทบต่อสภาพแวดล้อมของปัจจุบัน กระบวนการเปลือก โดยปกติเชลล์สคริปต์ไฟล์อื่น ๆ ที่คุณเขียนไม่ได้มา ; แต่จะถูกดำเนินการใน sub-shell (อินสแตนซ์แยกต่างหากหรือสำเนาbash
) และพวกเขาไม่สามารถเปลี่ยนแปลงสิ่งใดในสภาพแวดล้อมของ parent parent (อินสแตนซ์หลักของbash
ที่เริ่มต้นเมื่อคุณเปิดหน้าต่าง Terminal ใหม่)
ในการรับเชลล์ไปยังซอร์สสคริปต์คุณใช้source
คำสั่งซึ่งสร้างไว้ในเชลล์ ช็อตคัตสำหรับsource
คำสั่งคือ.
(ใช่เพียงแค่ตัวอักษรจุด / ระยะเวลา / ตัวอักษรเต็มหยุด) ในเวอร์ชันก่อนหน้าของคำตอบนี้ฉันใช้.
โอเปอเรเตอร์แทนsource
คำสั่ง