macOS Catalina 10.15 (เบต้า) - เหตุใด ~ / .bash_profile จึงไม่มีที่มาจากเชลล์ของฉัน


120

ฉันต้องการที่จะตั้งค่าตัวแปรสภาพแวดล้อมฉันเพิ่มด้านล่างเส้น~/.bash_profileและ~/.profileแต่มันก็ไม่ได้ทำงาน

export JBOSS_HOME=/Users/{USERNAME}/Desktop/jboss7

หลังจากนั้นออกจากเทอร์มินัลและเปิดอีกครั้งเมื่อดำเนินการecho $JBOSS_HOMEฉันไม่ได้รับอะไรเลย
ใส่คำอธิบายภาพที่นี่


ฉันเดาว่า. bash_profile ไม่มีที่มา คุณแน่ใจหรือไม่ว่าเทอร์มินัลของคุณสร้างเชลล์ล็อกอินแบบทุบตี ถ้าไม่เช่นนั้น. bash_profile จะถูกละเว้น
user1934428

1
@ user1934428 ใช่ถูกต้องไม่รู้ทำไมค่า bash เริ่มต้นถึงเปลี่ยน !!
Reza Dehnavi

ฉันไม่เข้าใจ "ค่าเริ่มต้น" มีการเปลี่ยนแปลงอะไร คุณไม่ได้บอกว่าคุณกำลังใช้โปรแกรม Terminal ใด แต่โดยปกติคุณสามารถกำหนดค่าแอปพลิเคชัน Terminal ว่าจะเริ่มเชลล์ได้อย่างไร
user1934428

@ user1934428 ฉันไม่รู้ว่ามีเชลล์ต่างๆ
Reza Dehnavi

1
Apple แทนที่ bash ด้วย zsh เป็นเชลล์เริ่มต้นใน macOS Catalina stackoverflow.com/a/59151321/5788247
Shomu

คำตอบ:


304

Apple ได้เปลี่ยนเชลล์เริ่มต้นเป็น zsh ดังนั้นคุณต้องเปลี่ยนชื่อไฟล์การกำหนดค่าของคุณ .bashrcคือตอนนี้.zshrcและตอนนี้ก็คือ.bash_profile.zprofile


4
Apple เปลี่ยนจาก bash เป็น zshell เนื่องจากปัญหาเรื่องลิขสิทธิ์ thenextweb.com/dd/2019/06/04/…
Manuel Hernandez

119
มันเป็นประสบการณ์ของผู้ใช้ที่ยอดเยี่ยมมากที่การตั้งค่า dev ของฉันแตกเมื่ออัปเกรด OS-X ทุกครั้ง
Chris Hatton

2
@ChrisHatton ฉันแค่รอการอัปเดตครั้งต่อไปเพื่อที่ฉันจะได้หยุดการตั้งค่าปัจจุบันของฉันและเริ่มทุกอย่างตั้งแต่เริ่มต้นอีกครั้งรอคอยการเปิดตัวครั้งต่อไป!
Utsav Gupta

51

หากคุณมีเหตุผลบางอย่าง (เช่นฉัน) ไม่ต้องการเปลี่ยนชื่อ / ย้าย~/.bash_profileไฟล์คุณสามารถทำสิ่งต่อไปได้:

  1. สร้างไฟล์ใหม่ ~/.zprofile
  2. พิมพ์ที่นั่น source ~/.bash_profile
  3. บันทึกและปิด
  4. เรียกใช้เซสชันเทอร์มินัลใหม่

5

ฉันสร้างไฟล์ใหม่ชื่อ

/usr/local/bin/mybash

ซึ่งมีสคริปต์ wrapper:

/usr/local/bin/bash --init-file $HOME/.bashrc

ผมติดตั้งนี้ local / bin / ทุบตีจากHomebrew

ลำดับเหตุการณ์ทั้งหมด

brew install bash
echo "/usr/local/bin/bash --init-file $HOME/.bashrc" > /usr/local/bin/mybash
chmod +x /usr/local/bin/mybash

จากนั้นฉันก็เปิดการตั้งค่าสำหรับterminal.app[cmd-comma] ภายใต้Generalแท็บให้เลือกปุ่มตัวเลือกสำหรับCommand (complete path)

ในกล่องข้อความเปลี่ยนข้อความจากไป/bin/zsh//usr/local/bin/bash

ตัวอย่างรูปแบบสุดท้าย


2
นี่เป็นตัวเลือกที่ดีเนื่องจากคำตอบข้างต้นไม่ได้คำนึงถึงว่าไวยากรณ์บางอย่างแตกต่างกันใน zsh และ bash
Prashant Sharma

3

หลังจากคุณปิดหน้าต่าง Terminal ตัวแปรที่คุณตั้งไว้ในหน้าต่างนั้นจะไม่สามารถใช้งานได้อีกต่อไป หากคุณต้องการให้ค่าของตัวแปรคงอยู่ในเซสชันและในหน้าต่าง Terminal ทั้งหมดคุณต้องตั้งค่าในสคริปต์เริ่มต้นเชลล์ สำหรับข้อมูลเกี่ยวกับการปรับเปลี่ยนสคริปต์เริ่มต้นเปลือก zsh ของคุณเพื่อให้ตัวแปรและการตั้งค่าอื่น ๆ ทั่วหลายครั้งดูส่วน“ภาวนา” ของหน้าคน zsh

คุณสามารถใช้~/.zloginเพื่อเพิ่มตัวแปรของคุณ

ดูข้อมูลอ้างอิงนี้


1

คุณสามารถคัดลอก bash_profile ที่มีอยู่แล้วตั้งชื่อเป็น zprofile และจะใช้งานได้ดี

  • รันคำสั่งด้านล่างในเทอร์มินัลและคุณจะได้รับการตั้งค่าหลังจากปิดและเปิดเทอร์มินัลใหม่

cp ~/.bash_profile ~/.zprofile


0

การเปลี่ยนโปรไฟล์ bash เป็นโปรไฟล์ zsh ใช้งานได้และแหล่งที่มาเพื่อดูการทำงาน

vikas@Vikas-Kumar ~ % mv .bash_profile .zsh_profile
vikas@Vikas-Kumar ~ % source .zsh_profile

0

คุณสามารถสร้างลิงก์ซิมโบลิกและเก็บไฟล์. bash_profile ด้วยสิ่งนี้:

ln -s .bash_profile .zsh_profile
source .zsh_profile

การเปลี่ยนแปลงใด ๆ ใน. bash_profile จะแสดงใน. zsh_profile


ฉันได้รับ ln: .zsh_profile: ไม่อนุญาตให้ใช้งาน
Salman Ullah Khan

0

คุณไม่จำเป็นต้องอัปเดตไฟล์ zsh เป็นค่าเริ่มต้นของ mac วางไว้ในเทอร์มินัล เช่น:

export ANDROID_HOME=$HOME/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools

0

แม้ว่าจะมี os Catalina / bin / bashมาให้ฟรี แต่ก็ไม่จำเป็นต้องชง เพียงแค่สร้างของคุณ.bash_profileและชุดเปลือกในการตั้งค่าขั้ว/ bin / ทุบตี จะพบ. bash_profile ของคุณโดยอัตโนมัติ z-shellไม่ใช่bash-shellและการเปลี่ยนชื่อจะใช้ได้ผลในกรณีส่วนใหญ่ แต่ไม่ถูกต้อง


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