จะหาไฟล์. bashrc ได้ที่ไหนใน Mac OS X Snow Leopard และ Lion


89

ฉันต้องการติดตั้ง rvm บนเครื่อง Snow Leopard ของฉัน

มันบอกว่าฉันต้องเพิ่มบรรทัดใน.bashrcไฟล์ของฉัน(ฉันใช้ทุบตี) แต่.bashrcไฟล์ของฉันอยู่ที่ไหน?


1
คุณควรตอบคำถามของคุณและตอบรับ (คุณต้องรอหนึ่งหรือสองวันก่อนที่ SU จะอนุญาตให้คุณทำเช่นนั้น) วิธีที่ผู้ที่มีปัญหาเดียวกันสามารถดูคำถามได้เห็นว่ามันมีคำตอบ
Nifle

1
วิธีแก้ปัญหาของเขาไม่แตกต่างจากคำตอบที่ได้รับการโหวตสูงสุด ..
David Cowden

เพียงเพื่อให้แน่ใจว่านี่ไม่ใช่ปัญหาของ "Linux = .bashrc vs. Mac OS =. (bash_) โปรไฟล์" ไฟล์เริ่มต้นเชลล์ทำงานเหมือนกันบน Linux และ Mac และไฟล์. bashrc เป็นสถานที่ที่เหมาะสำหรับเซสชันมากกว่า การตั้งค่าเฉพาะ คุณใช้ตัวอย่างเช่น tmux หรือหน้าจอคุณอาจไม่มีเซสชันการเข้าสู่ระบบ แต่ยังต้องการนามแฝงของคุณ เหตุผลที่ Mac รู้สึกแตกต่างก็คือลีนุกซ์ส่วนใหญ่มีการจัดส่งสคริปต์โปรไฟล์ระบบหรือโพรไฟล์โครงกระดูกที่ได้รับมอบหมาย bashrc (ที่มา) แล้ว
eckes

คำตอบ:


78

เกี่ยวกับปัญหา.bashrcข้างต้น:

ในระบบส่วนใหญ่~/.bashrcจะใช้เฉพาะเมื่อเริ่มต้นการโต้ตอบที่ไม่เข้าสู่ระบบเปลือก แต่เมื่อคุณเริ่มต้นขึ้นเปลือกใหม่ก็มักจะเป็นแบบโต้ตอบการเข้าสู่ระบบเปลือก ตั้งแต่นี้เป็นเปลือกเข้าสู่ระบบ.bashrcจะถูกละเว้น เพื่อให้สภาพแวดล้อมที่สอดคล้องกันระหว่างที่ไม่ได้เข้าสู่ระบบและเข้าสู่ระบบหอยคุณต้องแหล่ง.bashrcจากคุณหรือของคุณ.profile.bash_profile

ดูคู่มืออ้างอิง Bash ส่วน6.2 ไฟล์ Bash Startup

เรียกใช้เป็นเชลล์ล็อกอินแบบโต้ตอบหรือด้วย --login

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

เรียกใช้เป็นเชลล์ที่ไม่ใช่การล็อกอินแบบโต้ตอบ

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

ดังนั้นโดยปกติแล้ว ~ / .bash_profile ของคุณจะมีบรรทัด

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

หลังจาก (หรือก่อนหน้า) การกำหนดค่าเริ่มต้นเฉพาะสำหรับการเข้าสู่ระบบใด ๆ

บน Mac ของฉัน (วิ่ง Leopard) ~/.bashrcมีเส้นที่จะไม่มีแหล่งที่มา ฉันต้องเพิ่มฟังก์ชั่นนี้ด้วยตัวเอง

ในบางระบบและระบบปฏิบัติการอื่น ๆ ที่.bashrcมีที่มาจากทั่วโลก/etc/profileหรือหรือจะกระทำโดยใช้แฟ้มแม่แบบจาก/etc/bash_profile/etc/skel

จะซื่อสัตย์ความแตกต่างระหว่าง.bashrcและ.bash_profileไม่เข้าใจโดยชุมชน เมื่อนักพัฒนาซอฟต์แวร์หลายคนพูดว่า "เพิ่มสิ่งนี้ลงใน. bashrc" สิ่งที่พวกเขาหมายถึงจริงๆคือ "เพิ่มลงใน. bash_profile" ของคุณ พวกเขาต้องการให้เพิ่มฟังก์ชันการทำงานลงในเชลล์ล็อกอินของคุณ(ซึ่งก็คือ.bash_profile) ไม่ใช่ไปยังเชลล์ที่ไม่ใช่ของคุณ ในความเป็นจริงมันมักจะไม่สำคัญและการกำหนดค่าในการ.bashrcยอมรับได้


ลิงค์นี้ให้ภาพรวมที่ดีเกี่ยวกับประเภทของเชลล์และเมื่อโหลดไฟล์เริ่มต้น - hacktux.com/bash/bashrc/bash_profile
studgeek

"ที่มา" หมายถึงอะไรที่นี่?
elgrego

@elgrego นี่คือคำอธิบายที่ดี: เมื่อไฟล์มีแหล่งที่มา (โดยการพิมพ์ชื่อไฟล์ต้นฉบับหรือ. filename ที่บรรทัดคำสั่ง) บรรทัดของรหัสในไฟล์จะถูกดำเนินการราวกับว่าพวกเขาพิมพ์ที่บรรทัดคำสั่ง ดูtldp.org/HOWTO/Bash-Prompt-HOWTO/x237.html
Stefan Lasiewski

60

ดังนั้นปรากฎว่าบน Mac OS X เสือดาวหิมะเช่นเดียวกับระบบปฏิบัติการ Mac OS X Lion, แฟ้มที่เต็มไปจะเรียกว่าไม่.profile.bashrc

สิ่งที่คุณต้องการทำคือสร้างไฟล์ขึ้นมา~/.profileแล้วเรียกมันว่า. profile (หากยังไม่มีไฟล์)

ใส่ข้อมูลใด ๆ ที่คุณต้องการในการโหลดด้วยอินสแตนซ์ของการทุบตีแต่ละครั้ง (ขอบคุณ thepurplepixel)

หมายเหตุสองประการ:

  1. จุดที่อยู่ด้านหน้าของไฟล์จะทำเครื่องหมายว่ามองไม่เห็นต่อ Finder และคำสั่ง ls โดยค่าเริ่มต้น หากต้องการแสดงรายการไฟล์ที่มองไม่เห็นโดยใช้คำสั่ง ls จากเทอร์มินัลให้ใช้-aพารามิเตอร์เป็นเช่น:ls -a
  2. ~สัญลักษณ์ย่อมาจาก/Users/YourUserNameที่ yourusername เป็นชื่อย่อชื่อผู้ใช้ของคุณ

แก้ไข: Chris Page บันทึก (อย่างถูกต้อง) ว่าสิ่งที่คุณวางในไฟล์. profile จะใช้กับเชลล์ที่คุณใช้ (เช่น zhs, bash, และ cetera) หากคุณต้องการให้เนื้อหามีผลกับเปลือก bash เท่านั้นให้วางเนื้อหาใน.bash_profileไฟล์แทน.profileไฟล์


5
คำถามของคุณได้รับคำตอบ [ถูกต้อง] เมื่อวันที่ 1 มิถุนายน 2010 - หนึ่งวันหลังจากที่คุณถาม กว่าหนึ่งปีต่อมาคุณกลับมาและให้คำตอบเดียวกันที่แน่นอนและยอมรับคำตอบของคุณเอง ...
เดวิด Cowden

3
จริงๆแล้วคำตอบของเขาเพิ่มรายละเอียดมากกว่าคำตอบที่ให้ไว้ในวันที่ 1 มิถุนายน 2010 เขาแก้ปัญหาเฉพาะใน Mac OS X ซึ่งฉันพบว่ามีประโยชน์
webworm

3
โปรดทราบว่าหากมี.bash_profileอยู่แล้วในไดเรกทอรีบ้านของคุณแล้ว.profileไฟล์จะไม่ถูกอ่าน!
Phani

ฉันมีการติดตั้งใหม่ของ Mac Os El capitan ไม่มีไฟล์โปรไฟล์ เพียงสร้างไฟล์. profile และใช้งานได้ ฉันเปลี่ยนชื่อ. bashrc เป็น. profile เป็นการส่วนตัว
Nicolas Thery

4

.bashrcคุณจะต้องทำด้วยตัวเอง คุณสามารถใช้โปรแกรมแก้ไขข้อความเพื่อสร้างไฟล์ชื่อ.bashrc(ไม่มีนามสกุล) พร้อมเนื้อหาที่คุณต้องการและบันทึกไว้ในโฮมไดเร็กตอรี่ของคุณ ( /Users/YourUserName/)


1
ที่จริงแล้วใช้งานไม่ได้ แต่คุณส่งฉันไปในทิศทางที่ถูกต้องโดยบอกให้ฉันสร้างไฟล์ของตัวเอง ไฟล์ที่ทำงานกับการกำหนดค่า Snow Leopard คือ. profile ไม่ใช่. bashrc (ซึ่งมีสาเหตุบางประการที่ไม่ได้โหลดในระบบปฏิบัติการนี้) ฉันจะโพสต์คำแนะนำโดยละเอียดในคำถาม ขอบคุณ!
Yuval

@Yuval: โดยค่าเริ่มต้น.bashrcจะทำงาน แต่เฉพาะในกรณีที่ไม่มี .profileฉันเดาว่า~/.profileมีอยู่ตามค่าเริ่มต้นแล้ว ดีใจที่ฉันช่วยได้! (และคุณควรนำโซลูชันของคุณไปให้คำตอบและยอมรับสำหรับผู้อ่านในอนาคตของคำถามนี้)
squircle

ฉันคิดว่าความคิดเห็นของคุณเกี่ยวกับเฉพาะในกรณีที่ไม่มี. profileไม่ถูกต้อง .bashrc จะทำงานภายในเชลล์ที่ไม่ใช่การเข้าสู่ระบบแบบโต้ตอบหรือถ้ามันมาจาก. profile (.bash_profile อาจเป็นสถานที่ที่ดีกว่าเนื่องจาก. profile เป็นเชลล์บอร์น) .profile ถูกใช้ระหว่างเชลล์ที่ไม่ใช่การล็อกอินแบบโต้ตอบ
Stefan Lasiewski

@Stefan ฟังดูถูกต้องแล้ว ฉันไม่ได้เป็นผู้เชี่ยวชาญ :)
squircle

2
ไม่มีใครเป็น;) สิ่งนี้ (.bashrc เทียบกับ. โปรไฟล์เทียบกับ. bash_profile เทียบกับ. bash_login เทียบกับเชลล์ล็อกอินแบบโต้ตอบและเชลล์ที่ไม่ใช่การล็อกอินแบบโต้ตอบและเชลล์ที่ไม่ใช่แบบโต้ตอบ) ทำให้เกิดความสับสน
Stefan Lasiewski

3

ฉันพบว่าในระบบปฏิบัติการ 10.6.5 การตั้งค่า bash อยู่ใน "/ etc / bashrc" ฉันคิดว่านี่เป็นข้อกำหนดระดับสูงสำหรับเชลล์

อย่างไรก็ตามคุณต้องมีบัญชีรูทเพื่อทำการแก้ไข ข้อมูลจำเพาะต่อผู้ใช้ในท้องถิ่น "~ / .bashrc" ควรเริ่มต้นด้วยตัวอย่างต่อไปนี้เพื่ออ่านและโหลดการตั้งค่า bash ระดับระบบ:

if [ -r /etc/bashrc ]; then
    . /etc/bashrc 
fi

ฉันมักจะเพิ่มชื่อแทนใน bashrc ระดับระบบเพื่อให้ผู้ใช้ทุกคนสามารถเข้าถึงได้เช่นกัน นอกเสียจากว่าพวกเขาไม่ต้องการใช้ทางลัดและชื่อแทนของคุณ

โชคดี!


2
/ etc / profile (รันโดยล็อกอินเชลล์) เป็นสคริปต์เริ่มทำงานโกลบอล bash ที่ใช้กับผู้ใช้ทั้งหมดและจัดเตรียมพฤติกรรมเริ่มต้นสำหรับล็อกอินเชลล์ มันจะรัน / etc / bashrc ซึ่งมีการปรับแต่งที่ใช้กับทั้งล็อกอินและเชลล์ที่ไม่ใช่การล็อกอิน ผู้ใช้แต่ละคนควรสร้างไฟล์ ~ / .bash_profile ที่รัน ~ / .bashrc ซึ่งเป็นที่ที่การปรับแต่งส่วนใหญ่ควรจะเป็นและ ~ / .bashrc ควรรัน / etc / bashrc เพื่อสืบทอดพฤติกรรมเริ่มต้นสำหรับเชลล์ที่ไม่ใช่การเข้าสู่ระบบ
Chris หน้า

1
สำหรับผู้ใช้แต่ละคนจะดีที่สุดที่จะเพิ่มการปรับแต่งเหล่านี้ไปยังไดเรกทอรีบ้านของคุณที่ไม่~/.bashrc เป็นการตั้งค่าส่วนกลางสำหรับผู้ใช้ทั้งหมดในระบบของคุณซึ่งอาจไม่ใช่สิ่งที่คุณต้องการ นอกจากนี้ Apple อาจเข้ามาและเปลี่ยนเป็นระยะซึ่งอาจทำให้การปรับแต่งของคุณหายไป /etc/bashrc/etc/bashrc/etc/bashrc
Stefan Lasiewski

1

ใช้ไฟล์. profile เพื่อเพิ่มสิ่งที่คุณต้องการเพิ่มลงในไฟล์ linux .bashrc

ตัวอย่างเช่น

PATH=/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/:/opt/local/bin:/opt/depot_tools/:~/bin:$PATH
alias t='/Users/<username>/.todo/todo.sh'
alias punch='python /Users/<username>/.todo/Punch.py'
alias clock='cat </dev/tcp/time.nist.gov/13'
alias sudotext="sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit" 

2
ฉันขอแนะนำให้คุณใช้ ~ / .bash_profile (แทนที่จะเป็น ~ / .profile) นอกเสียจากว่าคุณแน่ใจว่าคุณต้องการให้การปรับแต่งของคุณมีผลในเชลล์อื่น ๆ และเข้ากันได้
Chris หน้า

เพียงเพื่อให้แน่ใจว่านี่ไม่ใช่ปัญหาของ "Linux = .bashrc vs. Mac OS =. (bash_) โปรไฟล์" ไฟล์เริ่มต้นเชลล์ทำงานเหมือนกันบน Linux และ Mac และไฟล์. bashrc เป็นสถานที่ที่เหมาะสำหรับเซสชันมากกว่า การตั้งค่าเฉพาะ คุณใช้ตัวอย่างเช่น tmux หรือหน้าจอคุณอาจไม่มีเซสชันการเข้าสู่ระบบ แต่ยังต้องการนามแฝงของคุณ เหตุผลที่ Mac รู้สึกแตกต่างก็คือลีนุกซ์ส่วนใหญ่มีการจัดส่งสคริปต์โปรไฟล์ระบบหรือโพรไฟล์โครงกระดูกที่ได้รับมอบหมาย bashrc (ที่มา) แล้ว
eckes
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.