.bashrc ไม่มีที่มาใน iTerm + Mac OS X


62

ฉันใช้ iTerm ใน Mac OS X 10.6 ดูเหมือนว่าเมื่อเปิด iTerm ทั้ง.bashrcมิได้.bash_profileมีที่มา ฉันบอกได้เพราะ.bashrcไม่ได้ตั้งชื่อแทนไว้ จะแก้ไขอย่างไร


2
สิ่งที่เกิดขึ้นคือจะถูกเรียกโดยทุบตีแรกซึ่งเป็นลัดวงจรคำแนะนำที่คุณมีใน~/.bash_profile ~/.bashrcปัญหานี้สามารถเกิดขึ้นได้โดยไม่คาดคิดถ้าโปรแกรมโกงเพิ่มคำแนะนำบางอย่างเพื่อให้คุณเมื่อก่อนหน้านี้ไฟล์ไม่ได้อยู่และคุณได้วางทุกทุบตีของคุณในคำสั่ง~/.bash_profile ~/.bashrcวิธีแก้ไขคือลบ ~ / .bash_profile ของคุณหรือมี ~ / .bash_profile แหล่งที่มาของคุณ ~ / .bashrc สิ่งนี้สามารถทำได้โดยการเพิ่มคำสั่ง: source ~/.bashrcที่ส่วนท้ายของคุณ~/.bash_profileและรีสตาร์ทเครื่อง
Eric Leschinski

คำตอบ:


53

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

ดูเหมือนว่า iTerm จะมองหา ~ / .bashrc หากได้รับการกำหนดค่าให้เริ่มต้นเป็นเชลล์การเข้าสู่ระบบเชลล์จะค้นหา ~ / .bash_profile มันเกือบจะเป็นข้อผิดพลาดในไฟล์ปรับแต่งมากกว่าที่เชลล์จะไม่ได้หามัน

ฉันจะใส่บรรทัดที่จุดเริ่มต้นของแต่ละไฟล์ ที่ด้านบนของ ~ / .bash_profile:

export BASH_CONF="bash_profile"

และที่ด้านบนของ ~ / .bashrc:

export BASH_CONF="bashrc"

จากนั้นเปิด iTerm ใหม่แล้วพิมพ์

$ echo $BASH_CONF

ควรยืนยันว่าไฟล์นั้นมีแหล่งที่มาและคุณสามารถตรวจสอบไวยากรณ์ของไฟล์ได้


2
การตั้งค่าตัวแปรสภาพแวดล้อมที่แตกต่างกันสำหรับไฟล์ต้นฉบับแต่ละไฟล์จะช่วยให้ได้รับข้อมูลมากขึ้นนั่นคือหากมีแหล่งข้อมูลมากกว่าหนึ่งไฟล์คุณจะรู้ได้ว่ามันไม่ใช่แค่ไฟล์สุดท้าย (ถ้าไม่ใช่แหล่งที่มา)
kmarsh

นี่ยังไม่โหลดไฟล์. bashrc ฉันต้องเพิ่มซอร์ส ~ / .bashrc ในการตั้งค่า iTerm และ Terminal ของฉัน btw ฉันใช้ Mac OS X 10.9.5
Giant Elk

ฉันเพิ่งเพิ่มไฟล์. profile และทำงานบน OS X 10.9.5 โดยอัตโนมัติโดยไม่ต้องยุ่งกับการตั้งค่าเทอร์มินัลของคุณ
Giant Elk

1
ฉันพบว่ามันเป็นเปลือกเข้าสู่ระบบโดยไปที่การตั้งค่า -> โปรไฟล์ -> ทั่วไปและเปลือกเข้าสู่ระบบจะถูกเลือกภายใต้คำสั่ง สามารถใช้ได้กับ MacOS El Capitan และ iTerm2 3.0.14
Aditya

วิธีแก้ปัญหาที่นี่ไม่ได้ผลสำหรับฉัน แต่ฉันพบวิธีแก้ปัญหา ในการเริ่มต้นไม่มี bashrc และ bash_profile คำตอบที่นี่เสนอให้สร้าง bashrc แทนที่จะสร้างไฟล์ bashrc ฉันสร้าง bash_profile ขึ้นมาและใช้งานได้ ตอนนี้ฉันต้องเข้าใจว่าทำไม bashrc ไม่ถูกเรียกใช้และ bash_profile ใช่
kalmanIsAGameChanger

68

ใน iTerm2 ไม่มีวิธีแก้ปัญหาใดที่เหมาะกับฉัน ฉันสามารถอ่านไฟล์. bashrc ของฉันได้อย่างถูกต้องโดยการเพิ่มคำสั่ง

source ~/.bashrc 

ไปที่ฟิลด์ส่งข้อความเมื่อเริ่มต้น:ในการตั้งค่า / ทั่วไปสำหรับโปรไฟล์ iTerm ของฉัน

ป้อนคำอธิบายรูปภาพที่นี่


เกิดอะไรขึ้นเมื่อคุณทำในสิ่งที่คำตอบที่ยอมรับได้แนะนำ ไม่มีเอาต์พุตหรือ
Daniel Beck

ขวา. ฉันไม่มีเอาต์พุตและ iTerm 2 เพิ่งโหลดเชลล์ bash เริ่มต้นโดยไม่มีนามแฝงของฉัน
Mark Struzinski

คำตอบที่เสียจนกระทั่งตอนนี้ - ~/.bashrcข้อมูลที่สองก็ควรที่จะเข้าไป แก้ไขมัน
Daniel Beck

ฉันใช้ ZSH และมีปัญหาเดียวกัน ยกเว้นว่าไม่มีไฟล์กำหนดค่าของฉันในตอนแรกและจะต้องสร้างขึ้น ฉันใช้คำตอบนี้และตั้งค่า "ส่งข้อความเมื่อเริ่มต้น" แต่เมื่อฉันรีสตาร์ท ZSH สร้างมันเป็น. zsh และเขียนทับไฟล์ของฉันฉันสามารถลบ "ส่งข้อความเมื่อเริ่มต้น" และเพิ่ม configs ของฉันไปยังไฟล์ที่สร้างขึ้นใหม่ ไม่แน่ใจว่าสิ่งนี้จะช่วยให้ทุกคน
Arnolio

ฉันคิดว่านี่เป็นปัญหาของฉัน .. และจากนั้นตลอดทางได้ตระหนักว่าแคตตาล็อกบ้านของฉันไม่ใช่โฟลเดอร์ที่ฉันเริ่มต้นค่ะดังนั้นเมื่อฉันย้าย. bash_profile ไปยังตำแหน่งอื่นและฉันคิดว่าฉัน ln -s (เชื่อมโยงกับมัน จากแคตตาล็อก ~ (บ้าน) ของฉันในความเป็นจริงฉันเพิ่ม symlink ในโฟลเดอร์ที่ไม่ถูกต้องการเพิ่มที่นี่ในกรณีที่ช่วยคนอื่นใครจะไปหาคำตอบนี้
Alisso

23

ฉันแค่สงสัยว่าคุณใช้ Bash จริงๆเหรอ? คุณอาจจะสามารถใช้echo $SHELLมันค่อนข้างเป็นไปได้ว่าคุณกำลังใช้zshคุณได้ติดตั้งบน-zh ของฉัน ?

ฉันพบปัญหาเดียวกันกับคุณฉันแก้ไขมันด้วยการกำหนดค่า~ / .zshrcแทน~ / .bash_profileสำหรับ login shell หรือ~ / .bashrcสำหรับ non-login shell

บางทีคุณสามารถลอง


1
ข้อเสนอแนะที่น่าสนใจแม้ว่าคำถามนี้มีอายุ 3 ปีและมีคำตอบที่ยอมรับได้
Tyson

12

บนเครื่อง 10.6 ของฉัน~/.profileมีที่มา ดังนั้นsource .bashrcรายการใน~/.profileควรทำงาน


ทำงานให้ฉันใน Mac OS El Capitan
674669

ประสบการณ์ของฉันบอกว่าคุณไม่ต้องการแหล่งหนึ่งไฟล์. bashx จากอีกไฟล์พวกเขาแยกกันด้วยเหตุผล :) ถ้าคุณทำอย่างนั้นมีบางอย่างผิดปกติ
Alexander Mills

@AlexanderMills เหตุผลที่ไฟล์เหล่านี้มีอยู่คือเพราะ Mac ฉีกออกเป็น Unta outta ไม่มีเหตุผลที่ทุกคนไม่ควรโหลดสำหรับผู้ใช้
RaisinBranCrunch

คุณสามารถรับการโทรแบบวนหากพวกเขาโหลดกันเป็นปัญหาวิธีที่ดีที่สุดในการหลีกเลี่ยงนั่นคือการพลิกบูลีนด้วย env var และโหลดไฟล์อื่น ๆ หากไม่ได้ตั้งค่าบูลีนเท่านั้น
Alexander Mills

8

แก้ไขได้ง่าย

1.เปิด~/.zshrcไฟล์ของคุณ

2.เพิ่มบรรทัดต่อไปนี้ที่ท้ายไฟล์

source ~/.bash_profile

1
ยอดเยี่ยม! นั่นทำเพื่อฉัน มันไม่เคยเกิดขึ้นกับฉันที่ zsh เริ่มต้นขึ้นหลังจากที่ฉันติดตั้ง Oh-my-zh
Cindy Conway

6

ในเครื่อง 10.9 ของฉัน ~ / .bash_profile มีที่มา ดังนั้นรายการ. bashrc ต้นทางใน ~ / .bash_profile ควรทำงาน


1

ใส่คำจำกัดความนามแฝงของคุณในไฟล์โปรไฟล์ bash คุณต้องสร้างไฟล์ แต่มันจะถูกจัดทำโดยอัตโนมัติ ฉันสร้างไฟล์แยกต่างหากชื่อ alias.configuration และแหล่งที่มาใน. bash_profile เพียงเพราะฉันมีผู้ใช้คนอื่นกำหนดไว้และต้องการให้มีนามแฝงชุดเดียวกัน


1
อันที่จริงค่า.bashrcมิได้.bash_profileมีที่มา
คำนวณ

1

เพิ่ม

set -x

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

คุณสามารถลบset -xบรรทัดได้เมื่อแก้ไขปัญหาเสร็จแล้ว


1

วันที่ 10.10 และ iTerm2 2.0 โปรไฟล์ที่กำหนดเอง

  • .bash_rc ควรทำงาน
  • .bash_profile ลอง "/ bin / bash --login" แทน "/ bin / bash"

ฉันโหวตคำตอบนี้เพราะมันดูเหมือนจะเป็นคนเดียวที่ยอมรับว่าใน OS X ในบางจุดทุบตีจะมา ".bash_rc" แทน ".bashrc" ฉันมาที่นี่เพียงเพราะฉันพยายามค้นหาสาเหตุ (และฉันยังไม่รู้)
Marnix A. van Ammers

0

ใน iTerm2 ตรวจสอบให้แน่ใจว่าคุณใช้ "login shell" แทนคำสั่งกำหนดเองรวมถึง "login" ซึ่งไม่ได้ทำตามที่คุณคาดหวัง


คำสั่ง iTerm2 ทำอะไรได้จริง?
studgeek

0

ทำการเปลี่ยนแปลงต่อไปนี้และ iTerm จะทำการ bashrc

iTerm> ค่ากำหนด> ทั่วไป> [x] คำสั่ง: / bin / bash


0

ปัญหาสามารถแก้ไขได้โดยการเพิ่มบรรทัดด้านล่างลงใน / etc / bashrc

[-r "$ HOME / .bashrc"] && "$ HOME / .bashrc"


-1

ฉันรวมวิธีแก้ปัญหาคู่เข้าด้วยกันเพื่อทำงานอย่างที่คาด

.bash_profile แหล่งที่มาและเรียกใช้บน zsh

Preferences -> Profiles -> General .

เลือกคำสั่งภายใต้คำสั่ง และเพิ่มในกล่องข้อความ
/bin/bash --login

จากนั้นใน. bash_profile เพิ่มบรรทัด /bin/zsh --login

แค่นั้นแหละ.


(1) อะไร (2) หากคุณมีการbashวิ่งตลอดเวลาzshนั่นไม่ใช่สิ่งที่ทุกคนคาดหวัง
สกอตต์

หากฉันตั้งค่า / bin / bash --login จะไม่มีคุณสมบัติใด ๆ ของ zsh ถ้าฉันเปลี่ยนเป็นการตั้งค่าการเข้าสู่ระบบจะไม่อ่าน. bash_profile ทุกครั้งที่ฉันต้องทำงานsource ~/.bash_profileด้วยตนเอง @Scott หลังจากทำสิ่งต่าง ๆ ข้างต้นฉันมี zsh ในวิธีที่ต้องการ
muhammed basil

(1) จุดของฉันคือว่าzshอาจจะมีสิ่งที่คุณต้องการ ,แต่มันก็ไม่จำเป็นต้องใช้หรือถามด้วยคำถามนี้ซึ่งแท็ก [ทุบตี] zshและไม่ได้พูดอะไรเกี่ยวกับ (2) หากคุณกำหนดฟังก์ชันนามแฝงและเชลล์และตั้งค่าตัวแปร (โดยไม่ส่งออก) ในของคุณ.bashrcและ / หรือ.bash_profileพวกเขามีให้ในzshเชลล์หรือไม่?
สกอตต์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.