Mac OS X .bashrc ไม่ทำงาน


77

ฉันมี.bashrcไฟล์หนึ่งบรรทัดในโฮมไดเร็กตอรี่ของฉัน:

alias countlines='find . -type f -print0 | xargs -0 cat | wc -l'

แต่มันไม่ได้สร้างนามแฝง ทำไมจึงเป็นเช่นนั้น

คำตอบ:


101

ใน OSX, ใช้แทน.bash_profile.bashrc

และใช่.bash_profileไฟล์ควรอยู่ใน/Users/YourName/
(กล่าวอีกนัยหนึ่ง~/.bash_profile)

ตัวอย่างเช่น, /Users/Aaron/.bash_profile


11
นี่ไม่ใช่คำตอบที่ถูก นามแฝงไม่ได้รับการสืบทอดดังนั้นหากคุณกำหนดเฉพาะใน. bash_profile พวกเขาจะไม่ถูกกำหนดในเชลล์ที่ไม่ใช่การเข้าสู่ระบบ (เช่นเมื่อคุณรัน bash ใน bash)
LaC

1
หรืออย่างใดอย่างหนึ่งสามารถใช้ bash_aliases ซึ่งมีผลเหมือนกับวางนามแฝงใน bashrc แต่สามารถจัดการได้มากขึ้น: ss64.com/osx/syntax-bashrc.html
Atul Ingle

4
ใน. bash_profile ของฉันฉันเพิ่งเขียนหนึ่งบรรทัดไปยังนามแฝง (เรียงลำดับ) bashrc ->source ~/.bashrc
Eric Hodonsky

86

.[bash_]profileและ.bashrcสามารถใช้ได้ทั้งบน OS X และ Linux อดีตถูกโหลดเมื่อเชลล์เป็นล็อกอินเชลล์ หลังเมื่อมันไม่ ความแตกต่างที่แท้จริงคือลีนุกซ์รันเชลล์ล็อกอินเมื่อผู้ใช้ล็อกอินเข้าสู่เซสชันกราฟิกจากนั้นเมื่อคุณเปิดแอปพลิเคชันเทอร์มินัลเชลล์เหล่านั้นคือเชลล์ที่ไม่ใช่ล็อกอิน ในขณะที่ OS X ไม่ได้เรียกใช้เชลล์เมื่อเข้าสู่ระบบแบบกราฟิกและเมื่อคุณเรียกใช้เชลล์จาก Terminal.app นั่นคือล็อกอินเชลล์

หากคุณต้องการให้นามแฝงของคุณทำงานทั้งในเชลล์สำหรับเข้าสู่ระบบและที่ไม่ได้ลงชื่อเข้าใช้ (และโดยปกติคุณจะทำ) คุณควรใส่ไว้ใน. bashrc และ source .bashrc ใน. bash_profile ของคุณโดยมีบรรทัดดังนี้:

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

สิ่งนี้ใช้ได้กับทุกระบบที่ใช้ bash


15
+1 กับข้อแม้ที่ทุกอย่างใน. bashrc จะถูกเรียกใช้อีกครั้งสำหรับ sub-shells (และ subsub-, subsubsub-, ฯลฯ ) ดังนั้นเช่นPATH=$PATH:/my/private/binariesจะนำไปสู่ ​​PATH bloat ดูสิ่งนี้สำหรับวิธีแก้ปัญหา
Gordon Davisson

2
จริง เนื่องจากตัวแปรเช่นการส่งออกได้รับมาผมก็ตั้งไว้ในแทน.profile .bashrc
LaC

1
@LaC คุณสามารถอธิบายได้ว่าตัวแปรอินสแตนซ์ที่ส่งออกของ _S ได้รับการสืบทอดฉันเพิ่งตั้งค่าเป็น.profile_... ?
sam

1
@ แซมฉันไม่รู้ว่า "อินสแตนซ์" มาจากไหน ฉันแค่หมายถึง "ตัวแปรส่งออก" น่าเสียดายที่ฉันไม่สามารถแก้ไขความคิดเห็นนั้น
LaC

2
@dinosaur: "-r" ตรวจสอบว่าไฟล์อ่านได้หรือไม่
mhvelplund


2

มันไม่ได้เป็นนามแฝงเพราะ.bash_profileใช้แทน.bashrcใน Mac OS X

ดังนั้นคุณมีสองทางเลือก:

  • ใส่นามแฝงในของคุณ ~/.bash_profile

  • หรือแหล่งที่มาของคุณ.bashrcจากของคุณ.bash_profileโดยเพิ่มบรรทัดนี้ไปที่.bash_profile:

    . ~/.bashrc


1

บนMac OS X Yosemiteให้เรียกใช้คำสั่งต่อไปนี้:

vi ~/.profile

จากนั้นเพิ่มบรรทัดต่อไปนี้:

source ~/.bashrc

ตอนนี้บันทึกและปิด.profileจากนั้นเปิดหน้าต่าง Terminal ใหม่หรือเพียงแค่เรียกใช้:

source ~/.profile

ดูคำตอบนี้ด้วย มันทำงานกับ v10.10.3


นี่เป็นมากกว่าคำตอบใหม่เมื่อสี่ปีที่แล้ว
G-Man

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