วิธีแก้ไข Terminal ไม่โหลด ~ / .bashrc บน OS X Lion [ปิด]


176

เมื่อใดก็ตามที่ฉันเปิดแท็บใหม่ใน Terminal โดยใช้Cmd+ Tมันจะเปิด bash ในไดเรกทอรีเดียวกันกับแท็บก่อนหน้า สิ่งนี้ใช้ได้ดีเมื่อฉันอยู่ใน~ไดเรกทอรี แต่ถ้าฉันอยู่ที่อื่นฉันได้รับข้อผิดพลาดในการโหลด.bashrc

Last login: Sat Oct 15 21:10:00 on ttys002
-bash: .bashrc: No such file or directory
Jakub-Arnolds-MacBook-Pro:projects darth$ 

ดูเหมือนว่า.bashrcจะโหลดผ่านทางญาติและไม่ใช่เส้นทางที่สมบูรณ์เพราะถ้าฉันทำsource ~/.bashrcทุกอย่างทำงานได้อย่างราบรื่น

โหลด bashrc

ฉันคิดว่านี่เป็นปัญหาที่เกี่ยวข้องกับ OS X Lion เพราะก่อนการอัพเกรดจาก Snow Leopard ฉันไม่มีปัญหาเดียวกัน แต่นั่นอาจเกิดจาก Terminal เปิดอยู่เสมอ~ฉันจำไม่ได้ว่ามันพยายามเปิดไดเรกทอรีเดียวกันหรือไม่

อย่างไรก็ตามคำถามยังคงเหมือนเดิมฉันจะสร้างโหลดเทอร์มินัล~/.bashrcผ่านเส้นทางสัมบูรณ์ได้อย่างไรและไม่สัมพันธ์กัน


1
คำถามนี้ควรถูกย้ายไปที่ apple ไม่ได้ปิด (ถ้าเป็นไปได้?)
Sparr

@Sparr ฉันเห็นด้วยกับคุณโดยสิ้นเชิง แต่ผู้ดำเนินรายการกำลังย้ายคำถามที่ใหม่กว่าเท่านั้นไม่ใช่คำถามที่เก่ากว่า ดูการสนทนาที่นี่
рüффп

คำตอบ:


357

เทอร์มินัลเปิดเชลล์ล็อกอิน หมายความว่า~/.bash_profileจะถูกประหารชีวิต~/.bashrcไม่ใช่

วิธีแก้ปัญหาสำหรับระบบส่วนใหญ่คือ "ต้องการ" ~/.bashrcใน~/.bash_profile: เพียงแค่วางตัวอย่างนี้ใน~/.bash_profile:

[[ -s ~/.bashrc ]] && source ~/.bashrc

8
ใครสามารถอธิบายสิ่งที่[[ -s /file/path ]]กำลังทำอยู่ การพยายามอธิบายถึง Google นั้นไม่ง่ายเกินไป
เชน

18
จากman bash: - ไฟล์จริงถ้าไฟล์มีอยู่และมีขนาดใหญ่กว่าศูนย์
ckruse

1
"เทอร์มินัลเปิดเชลล์ล็อกอิน" - เชลล์ระบบปฏิบัติการประเภทอื่นคืออะไร ฉันจะหาเอกสารเพิ่มเติมเกี่ยวกับมันได้ที่ไหน
dknight

4
มี "เชลล์แบบโต้ตอบ" และ "ชื่อล็อกอินเชลล์" คู่มือของคุณทุบตี ( man bash) พูดคุยเกี่ยวกับมันและอธิบายว่าบทภาวนา (เพียงค้นหาINVOCATIONหลังจากเรียกman bashโดยการพิมพ์/INVOCATION)
ckruse

3
ฉันล้มเหลวในการดูว่าคำถามเกี่ยวกับสถานการณ์การเรียกใช้โค้ดที่แก้ไขโดยบรรทัดของโค้ดคือ "off topic" ไปยังไซต์คำถามการเขียนโปรแกรม
Kheldar

26

การเปลี่ยนชื่อ.bashrcเป็น.profile(หรือการลิงก์แบบนุ่มนวลหลังไปยังอดีต) ควรทำการหลอกลวงด้วย ดูที่นี่


หรือคุณสามารถเชื่อมโยงพวกเขาได้: cd && ln -s ./.bashrc ./.profileโปรดทราบว่าsymlink นั้นมีความละเอียดอ่อนเกี่ยวกับเส้นทางของไฟล์ผมเชื่อว่าการใช้ไวยากรณ์ข้างต้นนั้นใช้ได้ แต่เพื่อให้แน่ใจว่าคุณสามารถใช้เส้นทางแบบสัมบูรณ์ได้ทุกกรณี
Steve Benner

1
เอ่อไม่ ไฟล์เหล่านี้มีวัตถุประสงค์ที่แตกต่างกัน ถ้าคุณมีไวยากรณ์ทุบตีในคุณจะทำลายปกติ.profile sh
tripleee

14

ฉันมีดังต่อไปนี้ในของฉัน~/.bash_profile:

if [ -f ~/.bashrc ]; then . ~/.bashrc; fi

หากฉันมี.bashrcแทน~/.bashrcฉันจะเห็นอาการแบบเดียวกันกับที่คุณเห็น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.