ตั้งค่าตัวแปรสภาพแวดล้อมบน Mac OS X Lion


532

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

ดังนั้นใครบางคนได้โปรดอธิบายอย่างอดทนให้กับผู้ใช้ Windows คนก่อน (ต้องการที่จะคุ้นเคยกับความสุขถ้าเริ่มสับสนกับโลก OS X ในตอนแรก) จะทำยังไงทีละขั้นตอน?

ฉันต้องการตัวแปรที่จะตั้งค่าทั้งสำหรับแอปพลิเคชัน GUI และแอปพลิเคชันบรรทัดคำสั่งและในขณะนี้มันมีไว้สำหรับสคริปต์ ant ที่ต้องการตัวแปร แต่ส่วนใหญ่จะเป็นความต้องการอื่น ๆ เช่นกัน

โปรดทราบว่าฉันมี Lion เช่นกันเนื่องจากคำตอบมากมายที่คุณได้รับจาก Googling นั้นดูเหมือนว่าล้าสมัยสำหรับ Lion ...

โปรดทราบว่าฉันไม่มีประสบการณ์การใช้งานเทอร์มินัล ฉันยินดีที่จะเรียนรู้ แต่โปรดอธิบายสำหรับเณร ...


ไม่ใช่คำตอบที่จะทำงานถ้าคุณพยายามอ่านจากแอปพลิเคชันบางอย่างเช่นฤดูใบไม้ผลิ
Mehraj Malik

คำตอบ:


403

อย่างแรกสิ่งหนึ่งที่ต้องจดจำเกี่ยวกับ OS X ก็คือมันสร้างขึ้นบน Unix นี่คือที่มาของ. bash_profile เมื่อคุณเริ่มแอพ Terminal ใน OS X คุณจะได้เปลือก bash เป็นค่าเริ่มต้น bash shell มาจาก Unix และเมื่อมันโหลดมันจะรันสคริปต์. bash_profile คุณสามารถแก้ไขสคริปต์นี้เพื่อให้ผู้ใช้ของคุณเปลี่ยนการตั้งค่าของคุณ ไฟล์นี้อยู่ที่:

~/.bash_profile

อัพเดทสำหรับ Mavericks

OS X Mavericks ไม่ได้ใช้ environment.plist - อย่างน้อยไม่ใช่สำหรับแอปพลิเคชัน windows OS X คุณสามารถใช้คอนฟิกูเรชัน launchdสำหรับแอ็พพลิเคชันที่มีหน้าต่าง .bash_profile ยังคงรองรับเนื่องจากเป็นส่วนหนึ่งของ bash shell ที่ใช้ใน Terminal

สิงโตและภูเขาสิงโตเท่านั้น

แอปพลิเคชันที่มีหน้าต่าง OS X จะได้รับตัวแปรสภาพแวดล้อมจากไฟล์ environment.plist ของคุณ นี่น่าจะเป็นสิ่งที่คุณหมายถึงโดยไฟล์ ".plist" ไฟล์นี้อยู่ที่:

~/.MacOSX/environment.plist

หากคุณทำการเปลี่ยนแปลงไฟล์ environment.plist ดังนั้นแอปพลิเคชัน windows OS X รวมถึงแอป Terminal จะตั้งค่าตัวแปรสภาพแวดล้อมเหล่านั้น ตัวแปรสภาพแวดล้อมใด ๆ ที่คุณตั้งค่าใน. bash_profile จะมีผลกับเปลือก bash ของคุณเท่านั้น

โดยทั่วไปฉันตั้งค่าตัวแปรในไฟล์. bash_profile ของฉันเท่านั้นและจะไม่เปลี่ยนไฟล์. plist (หรือไฟล์ launchd บน Mavericks) แอปพลิเคชันที่มีหน้าต่าง OS X ส่วนใหญ่ไม่ต้องการสภาพแวดล้อมแบบกำหนดเองใด ๆ เมื่อแอปพลิเคชันต้องการตัวแปรสภาพแวดล้อมเฉพาะฉันจะเปลี่ยน environment.plist (หรือไฟล์ launchd บน Mavericks)

ดูเหมือนว่าสิ่งที่คุณต้องการคือการเปลี่ยนไฟล์ environment.plist แทน. bash_profile

สิ่งสุดท้ายที่ถ้าคุณมองหาไฟล์เหล่านั้นฉันคิดว่าคุณจะไม่พบพวกเขา หากฉันจำได้ถูกต้องพวกเขาไม่ได้ติดตั้ง Lion ครั้งแรก

แก้ไข:นี่คือคำแนะนำสำหรับการสร้างไฟล์ plist

  1. เปิด Xcode
  2. เลือกไฟล์ -> ใหม่ -> ไฟล์ใหม่ ...
  3. ภายใต้ Mac OS X เลือกทรัพยากร
  4. เลือกไฟล์ plist
  5. ทำตามคำแนะนำที่เหลือ

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

เมื่อสร้างไฟล์ plist แล้วคุณสามารถเปิดด้วย Xcode เพื่อแก้ไขได้ทุกเวลาที่คุณต้องการ


โอเคขอบคุณ. ฉันคิดว่าฉันเข้าใจว่าตัวหนอนหมายถึงโฟลเดอร์บ้านของฉันใช่ไหม (เช่น / Users / Anders ในกรณีของฉัน)? ดังนั้นหากไม่มีอยู่ฉันควรสร้างไฟล์ข้อความใหม่ที่ว่างเปล่าโดยใช้ชื่อที่คุณพูดถึง (ฉันจะได้รับอนุญาตให้สร้างไฟล์ที่ขึ้นต้นด้วยจุดหรือไม่)? แล้วเพิ่มอะไรในไฟล์เหล่านั้นเพื่อตั้งค่าตัวแปรสภาพแวดล้อม? ตัวอย่างเช่นฉันต้องเพิ่มตัวแปร AHF_OPT ซึ่งควรชี้ไปยังโฟลเดอร์ที่สคริปต์ ant ต้องการซึ่งจะเพิ่มในไฟล์ทั้งสองนี้ได้อย่างไร
Anders

1
สิ่งที่ต้องลองสองอย่าง: อันดับแรกสตริงที่คุณวางมีอัฒภาคไม่ถูกต้องหลังจาก ".dtd>" อาจเป็นข้อผิดพลาดในการคัดลอกและวาง แต่ฉันต้องลบมันเพื่อให้ Xcode อ่านไฟล์ ประการที่สองคุณอาจต้องออกจากระบบและย้อนกลับเพื่อให้เอฟเฟ็กต์เกิดขึ้น
David V

7
~/.bashrcนอกจากนี้ยังมีประโยชน์ที่จะรู้เกี่ยวกับ ~/.bashrcไฟล์จะทำงานทุกครั้งที่คุณเปิด bash shell ใหม่ที่ไม่ใช่การเข้าสู่ระบบเช่น xterm / aterm และ~/.bash_profileทำงานเฉพาะกับ login shell เช่นเมื่อคุณเข้าสู่ระบบครั้งแรก
DanSkeel

1
พบคำอธิบายที่ชัดเจนเกี่ยวกับการเพิ่มความสุข environment.plist นี่developer.apple.com/library/mac/#qa/qa1067/_index.html
และในที่สุด

1
คำตอบที่ดียกเว้นวลีที่น่าอึดอัดใจ "แอปพลิเคชัน OS X windows" นั่นยิ่งแย่กว่าการอ้างถึง X11 ว่า "X Windows" ดีกว่าที่จะเรียกว่า Aqua หรือเพียงแค่ "แอปพลิเคชัน."
SigmaX

222

ไฟล์ของคุณ.profileหรือ.bash_profileเป็นเพียงไฟล์ที่มีอยู่ในโฟลเดอร์ "home" ของคุณ หากคุณเปิดหน้าต่าง Finder และคลิกชื่อบัญชีของคุณในบานหน้าต่างรายการโปรดคุณจะไม่เห็นพวกเขา หากคุณเปิดหน้าต่างเทอร์มินัลแล้วพิมพ์lsเพื่อแสดงรายการไฟล์คุณจะยังไม่เห็นไฟล์เหล่านั้น อย่างไรก็ตามคุณสามารถค้นหาได้โดยใช้ls -aในสถานี หรือถ้าคุณเปิดโปรแกรมแก้ไขข้อความที่ชื่นชอบ (พูด TextEdit เนื่องจากมันมาพร้อมกับ OS X) และทำไฟล์ -> เปิดแล้วกดCommand+ Shift+ .และคลิกที่ชื่อบัญชีของคุณ (โฮมโฟลเดอร์) คุณจะเห็นเช่นกัน หากคุณไม่เห็นพวกเขาคุณสามารถสร้างได้ในโปรแกรมแก้ไขข้อความที่คุณชื่นชอบ

ตอนนี้การเพิ่มตัวแปรสภาพแวดล้อมนั้นค่อนข้างตรงไปตรงมาและคล้ายคลึงกับหน้าต่างในเชิงแนวคิด ในการ.profileเพิ่มของคุณเพียงหนึ่งรายการต่อบรรทัดชื่อตัวแปรและค่าดังต่อไปนี้:

export JAVA_HOME=/Library/Java/Home
export JRE_HOME=/Library/Java/Home

เป็นต้น

หากคุณกำลังปรับเปลี่ยนตัวแปร "PATH" ของคุณอย่าลืมใส่ PATH เริ่มต้นของระบบที่ตั้งค่าไว้แล้วสำหรับคุณ:

export PATH=$PATH:/path/to/my/stuff

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

คุณสามารถตรวจสอบว่าการเปลี่ยนแปลงของคุณมีผลโดยใช้คำสั่ง "set" ในเทอร์มินัลของคุณ เพียงแค่พิมพ์set(หรือset | moreถ้าคุณต้องการรายการหน้า) และให้แน่ใจว่าสิ่งที่คุณเพิ่มลงในไฟล์ที่มี

สำหรับการเพิ่มตัวแปรสภาพแวดล้อมให้กับแอพ GUI นั้นปกติไม่จำเป็นและฉันต้องการที่จะได้ยินเพิ่มเติมเกี่ยวกับสิ่งที่คุณพยายามทำโดยเฉพาะเพื่อให้คำตอบที่ดีขึ้น


2
ขอบคุณฉันไม่เข้าใจส่วนสุดท้ายค่อนข้างฉันต้องเปิดหน้าต่างเทอร์มินัลเพื่อตั้งค่าหรือพิมพ์. profile แต่ฉันจะไม่ต้องเปิดหน้าต่างเทอร์มินัลเพื่อพิมพ์. profile? และหากตั้งค่าโดยอัตโนมัติเพียงเปิดหน้าต่างเทอร์มินัลแล้วทำไมฉันต้องพิมพ์ ... และเมื่อฉันเปิดขึ้นมาพวกเขาจะถูกตั้งค่าอย่างถาวรหรือไม่? ผมอาจเข้าใจผิดคุณเพราะไม่ได้คำถามของฉันทำให้ความรู้สึกที่ฉัน ...
เดส

4
หากคุณเปิดหน้าต่างเทอร์มินัลก่อนที่จะเปลี่ยนโปรไฟล์การเปลี่ยนแปลงเหล่านั้นจะไม่ปรากฏในสภาพแวดล้อมของเทอร์มินัลที่มีอยู่ วิธีแก้ปัญหาอย่างรวดเร็วของคุณคือเพียงเปิดหน้าต่างเทอร์มินัลใหม่ นั่นคือทั้งหมดที่ ทุกหน้าต่างใหม่จะมีทุกสิ่งใน. profile ที่ตั้งไว้ เสมอ. วิธีการแก้ไขหน้าต่างเก่าที่เปิดอยู่แล้วคือการพิมพ์ ".profile" 2 คาบ, 1 ช่องว่างระหว่างกัน คำสั่ง "set" คือการตั้งค่าตัวแปรสภาพแวดล้อมที่ตายเมื่อคุณสิ้นสุดเซสชันที่คุณตั้งไว้การใช้ "set" โดยไม่มีอาร์กิวเมนต์จะแสดงรายการตัวแปรที่ตั้งค่าไว้ในปัจจุบัน
tokkov

1
Ahhh ฉันเห็นความสับสนที่ฉันสร้างขึ้น หากคุณไม่มีหน้าต่างเทอร์มินัลเปิดอยู่หน้าต่างใหม่แต่ละหน้าต่างจะโหลด. profile เมื่อเปิดขึ้นมาและคุณไม่จำเป็นต้องทำอะไรเลย หากในอีกทางหนึ่งคุณได้แก้ไข. profile ในหน้าต่างเทอร์มินัลของคุณหรือเปิดหน้าต่างเทอร์มินัลก่อนหน้านี้และต้องการให้มีการเปลี่ยนแปลงคุณต้องพิมพ์. .profileเพื่อโหลด
tokkov

2
ฉันไม่สามารถทำงานได้ ฉันเพิ่มไฟล์. bash_profile ภายใต้ / Users / Anders ด้วยการส่งออกบรรทัด AXF_DIR = / Applications / Antenna / AHFormatterV53 แต่กระบวนการมดยังไม่พบตัวแปร AXF_DIR ... นอกจากนี้ฉันลองใช้คำสั่ง set ใน Terminal และได้รับข้อมูลจำนวนมาก แต่ไม่มีอะไรเกี่ยวกับตัวแปรนี้ โปรดทราบว่าฉันได้รีสตาร์ทระบบเพื่อให้แน่ใจและฉันก็เริ่มหน้าต่างเทอร์มินัลใหม่ ...
Anders

2
.profileลองตั้งชื่อมันเป็นเพียงแค่ ฉันเพิ่งมองเครื่องที่ฉันเพิ่งซื้อและพวกเขาดูเหมือนจะใช้.profileวันนี้และไม่.bash_profile
tokkov

77

ต่อไปนี้เป็นข้อมูลเพิ่มเติมเล็กน้อยเกี่ยวกับตัวแปร PATH ใน Lion OS 10.7.x โดยเฉพาะ:

หากคุณต้องการตั้งค่า PATH ทั่วโลก PATH จะถูกสร้างโดยระบบตามลำดับต่อไปนี้:

  1. แยกเนื้อหาของไฟล์/private/etc/pathsหนึ่งเส้นทางต่อบรรทัด
  2. /private/etc/paths.dแยกเนื้อหาของโฟลเดอร์ แต่ละไฟล์ในโฟลเดอร์นั้นสามารถมีได้หลายพา ธ หนึ่งพา ธ ต่อบรรทัด ลำดับการโหลดจะถูกกำหนดโดยชื่อไฟล์ก่อนจากนั้นลำดับของบรรทัดในไฟล์
  3. setenv PATHคำสั่งใน/private/etc/launchd.confซึ่งจะผนวกเส้นทางที่ไปยังเส้นทางที่สร้างขึ้นแล้วใน # 1 และ # 2 (คุณไม่ต้องใช้ $ PATH การอ้างอิงตัวแปรเส้นทางที่ได้รับการสร้างขึ้นเพื่อให้ห่างไกล) แต่การตั้งค่า PATH ที่นี่นั้นไม่จำเป็นอย่างสมบูรณ์เนื่องจากอีกสองตัวเลือกถึงแม้ว่าที่นี่จะเป็นสถานที่ที่ตัวแปรสภาพแวดล้อมทั่วโลกสามารถตั้งค่าได้สำหรับผู้ใช้ทั้งหมด

เส้นทางและตัวแปรเหล่านี้ได้รับการถ่ายทอดโดยผู้ใช้และแอปพลิเคชันทั้งหมดดังนั้นจึงเป็นระดับโลกอย่างแท้จริง - การออกจากระบบและจะไม่รีเซ็ตเส้นทางเหล่านี้ - พวกเขาสร้างขึ้นสำหรับระบบและสร้างขึ้นก่อนผู้ใช้คนใดก็ได้ ดังนั้นการเปลี่ยนแปลงเหล่านี้จำเป็นต้องมีการรีสตาร์ทระบบเพื่อให้มีผล

BTW การติดตั้ง OS 10.7.x แบบคลีนไม่มีสิ่งenvironment.plistที่ฉันสามารถค้นหาได้ดังนั้นจึงอาจใช้งานได้ แต่อาจเลิกใช้แล้ว


1
อ๋อขอบคุณมาก! นี่เป็นส่วนที่เกี่ยวข้องมากกว่า. profile อย่างง่าย
Felixyz

2
หากคุณใช้วิธี path.d และคุณมีพา ธ ที่มีโฟลเดอร์ที่มีช่องว่างอยู่ หากคุณพยายามที่จะหลบหนีพวกเขา (ซึ่งเป็นเรื่องธรรมดาที่ฉันคิดว่า?) มันไม่ทำงาน (อย่างน้อยสำหรับฉัน) ฉันอ่านที่นี่: sweeting.org/mark/blog/2008/05/26/… (ค้นหา 'ช่องว่าง') หวังว่านี่จะช่วยคนอื่นได้!
Michael Trouw

1
@MichaelTrouw ความคิดเห็นของคุณช่วยฉันที! ฉันกำลังเพิ่มทางหนีสำหรับช่องว่าง แต่ไม่จำเป็น! ฉันใช้ Mac OS 10.9.2
kpsfoo

@ จอนpaths.dแตกต่างจากpathsอย่างไร นอกจากนี้อดีตจะแทนที่หลังหรือไม่
Pacerier

53
echo $PATH

มันพิมพ์ค่าเส้นทางปัจจุบัน

จากนั้นทำvim ~/.bash_profileและเขียน

export PATH=$PATH:/new/path/to/be/added

ที่นี่คุณกำลังต่อท้ายเส้นทางเก่าดังนั้นควรรักษาเส้นทางเก่าและเพิ่มเส้นทางใหม่ของคุณ

จากนั้นทำ

source ~/.bash_profile

สิ่งนี้จะดำเนินการและเพิ่มเส้นทาง

จากนั้นตรวจสอบอีกครั้งด้วย

echo $PATH

2
คำสั่ง "vim" ควรเป็น vim ~ / .bash_profile ฉันพยายามแก้ไขโพสต์ แต่ SO บอกฉันว่าการแก้ไขจะต้องมี 6 ตัวอักษร: /
Jason Polites

31

น่าเสียดายที่ไม่มีคำตอบเหล่านี้แก้ปัญหาเฉพาะที่ฉันมี

bashนี่เป็นทางออกที่ง่ายโดยไม่ต้องไปยุ่งกับ ในกรณีของฉันมันกำลังgradleทำงาน (สำหรับAndroid Studio)

Btw ขั้นตอนเหล่านี้เกี่ยวข้องกับ OSX (Mountain Lion 10.8.5)

  • เปิด Terminal ขึ้นมา
  • รันคำสั่งต่อไปนี้:

    sudo nano /etc/paths(หรือsudo vim /etc/pathsเป็นกลุ่ม)

    นาโน

  • ไปที่ด้านล่างของไฟล์และป้อนเส้นทางที่คุณต้องการเพิ่ม
  • กด control-x เพื่อออก
  • ป้อน 'Y' เพื่อบันทึกบัฟเฟอร์ที่แก้ไข
  • เปิดหน้าต่างเทอร์มินัลใหม่จากนั้นพิมพ์:

    echo $PATH

คุณควรเห็นเส้นทางใหม่ต่อท้ายเส้นทาง

ฉันได้รับรายละเอียดเหล่านี้จากโพสต์นี้:

http://architectryan.com/2012/10/02/add-to-the-path-on-mac-os-x-mountain-lion/#.UkED3rxPp3Q

ฉันหวังว่าจะช่วยคนอื่นได้


หลังจาก 3 ชั่วโมงของการพยายามทำความเข้าใจและทำการส่งออกไม่ว่าฉันจะพยายามทำอะไรและมันก็ใช้ได้ ขั้นตอนเดียวหายไป ฉันจะเพิ่ม
1.21 gigawatts

@ 1.21gigawatts ดีมากดีใจที่ช่วยคุณออกมาขอบคุณสำหรับการแก้ไข
wired00

1
อัปเดต: ใช้งานได้ แต่จะต้องรีสตาร์ทระบบหลังจากแก้ไข
Anant Simran Singh

โซลูชั่นที่สมบูรณ์แบบ!
Jayant Varshney

สมบูรณ์แบบสำหรับ MacOS 10.12.X
Camille G.

23

คำอธิบายที่ง่ายขึ้น

โพสต์ / คำถามนี้ค่อนข้างเก่าดังนั้นฉันจะตอบรุ่นที่เรียบง่ายสำหรับผู้ใช้ OS X Lion ตามค่าเริ่มต้น OSX Lion ไม่มีไฟล์ใด ๆ ต่อไปนี้:

  • ~ / .bashrc
  • ~ / .bash_profile
  • ~ / .profile

อย่างมากหากคุณทำสิ่งใดในเทอร์มินัลคุณอาจเห็น ~ / .bash_history

มันหมายถึงอะไร

คุณต้องสร้างไฟล์เพื่อตั้งค่าคำสั่ง bash เริ่มต้น (โดยทั่วไปใน ~ / .bashrc) หากต้องการทำสิ่งนี้ให้ใช้เครื่องมือแก้ไขประเภทใดก็ได้แม้ว่าจะทำได้ง่ายกว่าภายในเทอร์มินัล:

  1. %> emacs .profile
  2. [จาก w / ในประเภท emacs:] source ~/.bashrc
  3. [จาก w / ในประเภท emacs:] Ctrl + x Ctrl + s(เพื่อบันทึกไฟล์)
  4. [จาก w / ในประเภท emacs:] Ctrl + x Ctrl + c(เพื่อปิด emacs)
  5. %> emacs .bashrc
  6. [จาก w / in emacs พิมพ์ / วางคำสั่ง bash ทั้งหมด, บันทึก, และออกจาก]

ในครั้งถัดไปที่คุณออกจากและโหลดเทอร์มินัลใหม่ควรโหลดการกำหนดค่า bash ทั้งหมดของคุณ สำหรับการวัดที่ดีนั้นโดยทั่วไปแล้วควรแยกคำสั่งของคุณออกเป็นชื่อไฟล์ที่มีประโยชน์ ตัวอย่างเช่นจากภายใน ~ / .bashrc คุณควรมีsource ~/.bash_aliasesและวางคำสั่ง alias ทั้งหมดของคุณใน ~ / .bash_aliases


ทำไมพวกเขาลบมันออกเป็น btw?
Pacerier

@Pacerier ฉันไม่แน่ใจว่าพวกเขาลบมันออกไป แต่ไม่มีการปรับแต่งไฟล์เหล่านั้นไม่จำเป็น ปัญหาคือสำหรับทุกคนที่เพิ่งรู้จักกับเทอร์มินัล / เชลล์, OSX หรือ BSD ไฟล์เหล่านั้นจะไม่ชัดเจนและยากต่อการเรียนรู้มากขึ้น
vol7ron

ดังนั้นพวกเขาแทนที่มันด้วยอะไร?
Pacerier

พวกมันเป็นทางเลือกดังนั้นพวกเขาจึงไม่ได้แทนที่ด้วยสิ่งใด เป็นไฟล์ RC
vol7ron

18

สิ่งที่ได้ผลสำหรับฉันคือการสร้าง.launchd.confตัวแปรที่ฉันต้องการ:

setenv FOO barbaz

ไฟล์นี้อ่านโดย launchd เมื่อเข้าสู่ระบบ คุณสามารถเพิ่มตัวแปร 'ได้ทันที' เพื่อเรียกใช้ launchd โดยใช้:

launchctl setenv FOO barbaz`

ในความเป็นจริง.launchd.condเพียงแค่มีคำสั่ง launchctl

ตัวแปรที่ตั้งค่าด้วยวิธีนี้ดูเหมือนจะมีอยู่ในแอปพลิเคชัน GUI อย่างถูกต้อง

หากคุณพยายามตั้งค่าตัวแปร LANG หรือ LC_ ด้วยวิธีนี้และคุณใช้ iTerm2 ตรวจสอบให้แน่ใจว่าคุณปิดการใช้งานการตั้งค่า 'ตั้งค่าตัวแปรโลแคลอัตโนมัติ' ภายใต้แท็บเทอร์มินัลของโปรไฟล์ที่คุณใช้ ที่ดูเหมือนว่าจะแทนที่ตัวแปรสภาพแวดล้อมของ launchd และในกรณีของฉันคือการตั้งค่า LC_CTYPE ที่ใช้งานไม่ได้ทำให้เกิดปัญหากับเซิร์ฟเวอร์ระยะไกล (ซึ่งผ่านตัวแปร)

(environment.plist ยังคงทำงานกับ Lion ของฉันได้คุณสามารถใช้บานหน้าต่างการตั้งค่าRCenvironmentเพื่อบำรุงรักษาไฟล์แทนการแก้ไขด้วยตนเองหรือใช้ Xcode ที่ต้องการดูเหมือนว่าจะยังคงทำงานกับ Lion แม้ว่าจะเป็นอัปเดตล่าสุดจาก Snow Leopard ยุคทำให้มันเป็นวิธีที่ฉันชอบเป็นการส่วนตัว)


โดยคำตอบที่ง่ายที่สุด โปรดทราบว่าคุณจำเป็นต้องปิดแอปเทอร์มินัลทั้งหมดและเปิดใหม่อีกครั้งเพื่อให้การเปลี่ยนแปลงมีผล - ไม่เพียง แต่ปิดหน้าต่างเทอร์มินัลเดียว
Timmmm

1
คำตอบนี้ถูกถอดเกินกว่าที่จะใช้กับ OP สร้างได้อย่างไร สร้างที่ไหน
HenryRootTwo

15

ตั้งค่าตัวแปรสภาพแวดล้อม PATH ใน Mac OS

เปิดโปรแกรม Terminal (อยู่ในโฟลเดอร์ Applications / Utilites ตามค่าเริ่มต้น) เรียกใช้คำสั่งต่อไปนี้

touch ~/.bash_profile; open ~/.bash_profile

นี่จะเป็นการเปิดไฟล์ในโปรแกรมแก้ไขข้อความเริ่มต้นของคุณ

สำหรับ ANDROID SDK เป็นตัวอย่าง:

คุณต้องเพิ่มเส้นทางไปยังไดเรกทอรีแพลตฟอร์มเครื่องมือและเครื่องมือ Android SDK ของคุณ ในตัวอย่างของฉันฉันจะใช้ "/ Development / android-sdk-macosx" เป็นไดเรกทอรีที่ติดตั้ง SDK เพิ่มบรรทัดต่อไปนี้:

export PATH=${PATH}:/Development/android-sdk-macosx/platform-tools:/Development/android-sdk-macosx/tools

บันทึกไฟล์และออกจากโปรแกรมแก้ไขข้อความ ดำเนินการ. bash_profile ของคุณเพื่ออัปเดต PATH ของคุณ

source ~/.bash_profile

ตอนนี้ทุกครั้งที่คุณเปิดโปรแกรม Terminal คุณ PATH จะรวม Android SDK ไว้ด้วย


ขอบคุณ ไม่ทราบว่าทำไม แต่วิธีนี้ใช้ได้ผลสำหรับฉันเท่านั้นไม่ใช่วิธีการด้านบน
kroky

ฉันเพิ่มตัวแปรสภาพแวดล้อมตามที่คุณพูด แต่ฉันไม่สามารถใช้ใน xcode คุณมีความคิดหรือไม่? ฉันจำเป็นต้องใช้มันในเส้นทางการค้นหาส่วนหัว ขอบคุณล่วงหน้า.
Yucel Bayram

11

การเพิ่มตัวแปรพา ธ ไปยัง OS X Lion

นี่ค่อนข้างตรงไปตรงมาและทำงานให้ฉันในอาคารผู้โดยสาร:

$echo "export PATH=$PATH:/path/to/whatever" >> .bash_profile #replace "/path/to/whatever" with the location of what you want to add to your bash profile, i.e: $ echo "export PATH=$PATH:/usr/local/Cellar/nginx/1.0.12/sbin" >> .bash_profile 
$. .bash_profile #restart your bash shell

คำตอบที่คล้ายกันอยู่ที่นี่: http://www.mac-forums.com/forums/os-x-operating-system/255324-problems-setting-path-variable-lion.html#post1317516


1
เป็นที่น่าสังเกตว่าคุณจะต้องเรียกใช้จากรูทของโฮมไดเร็กตอรี่ของคุณ ตรวจสอบให้แน่ใจว่าที่ที่ของคุณโดยการออกที่มีการขัดแย้งหรือไม่cd cd ~/
ephsmith

3
ไม่จำเป็นต้องรีสตาร์ทเชลล์ source .bash_profileใช้
ephsmith

ฉันชอบวิธีนี้เพราะมันสั้น แต่ดูเหมือนจะไม่ทำงาน ฉันทำไปecho "export PATH=$PATH:/Applications/XAMPP/xamppfiles/bin/mysql" >> .bash_profileแล้วเวลาเดียวที่ฉันทำได้mysql -u root -pคือถ้าฉันรูทแล้ว ในขณะที่ฉันสามารถใช้งานApplications/XAMPP/xamppfiles/bin/mysql -u root -pได้ทุกที่ ฉันลองทั้งสองวิธีที่กล่าวถึงการเริ่มระบบใหม่: Yaw's และ @ ephsmith's
kasavbere

นอกจากนี้ถ้าฉันทำ $ PATH ECH เป็นราก (เช่น sudo su) /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Applications/XAMPP/xamppfiles/binฉันได้รับ เมื่อฉันไม่รูตฉันจะได้รับ/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
kasavbere

$PATHตัวแปรเฉพาะของผู้ใช้ (รากเป็นผู้ใช้)
ephsmith

7

เปิดเทอร์มินัล:

vi ~/.bash_profile

ใช้การเปลี่ยนแปลงกับระบบ (ไม่ต้องรีสตาร์ทคอมพิวเตอร์):

source ~/.bash_profile

(ใช้งานได้กับ macOS Sierra 10.12.1)


5

ฉันมีปัญหากับ Eclipse (เริ่มจาก GUI ไม่ใช่จากสคริปต์) ใน Maverics ว่ามันไม่ได้ใช้ PATH แบบกำหนดเอง ฉันลองใช้วิธีการทั้งหมดที่กล่าวถึงข้างต้นโดยไม่มีประโยชน์ ในที่สุดฉันก็พบคำตอบการทำงานที่ง่ายที่สุดตามคำแนะนำจากที่นี่ :

  1. ไปที่โฟลเดอร์/Applications/eclipse/Eclipse.app/Contents

  2. ไฟล์ Info.plist แก้ไขด้วยโปรแกรมแก้ไขข้อความ (หรือ XCode), เพิ่มLSEnvironmentพจนานุกรมสำหรับตัวแปรสภาพแวดล้อมที่มีเส้นทางแบบเต็ม โปรดทราบว่ามันยังมี / usr / bin ฯลฯ :

    <dict>
      <key>LSEnvironment</key>
      <dict>
            <key>PATH</key>
            <string>/usr/bin:/bin:/usr/sbin:/sbin:/dev/android-ndk-r9b</string>
      </dict>
      <key>CFBundleDisplayName</key>
      <string>Eclipse</string>
      ...
    
  3. โหลดพารามิเตอร์ใหม่สำหรับแอพด้วย

    /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.fra‌​mework/Support/lsregister -v -f /Applications/eclipse/Eclipse.app
    
  4. รีสตาร์ท Eclipse


5

ฉันขอยกตัวอย่างคุณจากตัวอย่างส่วนตัวของฉันในแบบที่ซ้ำซ้อนมาก

  1. ก่อนติดตั้ง JDK ตรวจสอบให้แน่ใจว่าได้ติดตั้งแล้ว ป้อนคำอธิบายรูปภาพที่นี่
  2. บางครั้ง macOS หรือ Linux ตั้งค่าตัวแปรสภาพแวดล้อมให้คุณโดยอัตโนมัติไม่เหมือนกับ Windows แต่นั่นไม่ใช่กรณีเสมอไป ลองตรวจสอบดู ป้อนคำอธิบายรูปภาพที่นี่ บรรทัดทันทีหลังจาก echo $ JAVA_HOME จะว่างถ้าตัวแปรสภาพแวดล้อมไม่ได้ถูกตั้งค่า ต้องว่างเปล่าในกรณีของคุณ

  3. ตอนนี้เราต้องตรวจสอบว่าเรามีไฟล์ bash_profile หรือไม่ ป้อนคำอธิบายรูปภาพที่นี่ คุณเห็นว่าในกรณีของฉันเรามี bash_profile แล้ว ถ้าไม่ใช่เราต้องสร้างไฟล์ bash_profile

  4. สร้างไฟล์ bash_profile ป้อนคำอธิบายรูปภาพที่นี่

  5. ตรวจสอบอีกครั้งเพื่อให้แน่ใจว่ามีไฟล์ bash_profile อยู่ ป้อนคำอธิบายรูปภาพที่นี่

  6. ตอนนี้เรามาเปิดไฟล์ bash_profile macOS เปิดขึ้นโดยใช้โปรแกรม TextEdit เริ่มต้น ป้อนคำอธิบายรูปภาพที่นี่

  7. นี่คือไฟล์ที่เก็บตัวแปรสภาพแวดล้อม หากคุณเปิดไฟล์ bash_profile ใหม่ไฟล์นั้นจะต้องว่างเปล่า ในกรณีของฉันมันถูกตั้งค่าไว้แล้วสำหรับภาษาการเขียนโปรแกรมหลามและการแจกอนา ตอนนี้ฉันต้องเพิ่มตัวแปรสภาพแวดล้อมสำหรับ Java ซึ่งเพิ่งเพิ่มบรรทัดแรก คุณต้องพิมพ์ VERBATIM บรรทัดแรก เพียงแค่บรรทัดแรก บันทึกและปิด TextEdit จากนั้นปิดเครื่อง ป้อนคำอธิบายรูปภาพที่นี่

  8. เปิดเทอร์มินัลอีกครั้ง ตรวจสอบว่าตัวแปรสภาพแวดล้อมถูกตั้งค่า ป้อนคำอธิบายรูปภาพที่นี่


4

ฉันใช้เส้นทางคนงี่เง่า เพิ่มสิ่งเหล่านี้ในตอนท้ายของ / etc / profile

for environment in `find /etc/environments.d -type f`
do
     . $environment
done

สร้างโฟลเดอร์ / etc / environment สร้างไฟล์ในชื่อ "oracle" หรือ "any" และเพิ่มสิ่งที่ฉันต้องการตั้งค่าไปทั่วโลก

/ etc $ cat / etc /environment.d/Oracle

export PATH=$PATH:/Library/Oracle/instantclient_11_2
export DYLD_LIBRARY_PATH=/Library/Oracle/instantclient_11_2
export SQLPATH=/Library/Oracle/instantclient_11_2
export PATH=$PATH:/Library/Oracle/instantclient_11_2
export TNS_ADMIN=/Library/Oracle/instantclient_11_2/network/admin

1

รายละเอียดเพิ่มเติมซึ่งอาจเป็นประโยชน์กับบางคน:

เนื่องจากการสำรวจของฉันเองตอนนี้ฉันรู้วิธีการตั้งค่าตัวแปรสภาพแวดล้อมใน 7 จาก 8 วิธีที่แตกต่างกัน ฉันพยายามที่จะทำให้ผู้ใช้เข้าถึงแอปพลิเคชันที่ฉันพัฒนาภายใต้ Xcode ฉันตั้งค่า "ผู้ติดตาม" โดยใช้วิธีการต่าง ๆ เหล่านี้เพื่อบอกฉันว่าอันไหนที่นำไปไว้ในขอบเขตของแอปพลิเคชันของฉัน จากด้านล่างคุณจะเห็นการแก้ไข "schema" ใน Xcode เพื่อเพิ่มการทำงานของอาร์กิวเมนต์เช่นเดียวกับ "putenv" สิ่งที่ไม่ได้ตั้งไว้ในขอบเขตนั้น: ~ / .MACOS / environment.plist, plist เฉพาะแอป, .profile และการเพิ่มเฟสบิลด์เพื่อเรียกใช้สคริปต์ที่กำหนดเอง (ฉันพบวิธีอื่นใน Xcode [อย่างน้อย] เพื่อตั้งค่า อย่างใดอย่างหนึ่ง แต่ลืมสิ่งที่ฉันเรียกว่าผู้ติดตามและไม่สามารถหาได้ตอนนี้อาจจะอยู่ในเครื่องอื่น .... )

GPU_DUMP_DEVICE_KERNEL คือ 3

GPU_DUMP_TRK_ENVPLIST คือ (null)

GPU_DUMP_TRK_APPPLIST คือ (null)

GPU_DUMP_TRK_DOTPROFILE คือ (null)

GPU_DUMP_TRK_RUNSCRIPT คือ (null)

GPU_DUMP_TRK_SCHARGS คือ 1

GPU_DUMP_TRK_PUTENV คือ 1

... ในทางกลับกันถ้าฉันไปที่ Terminal และพูดว่า "set" ดูเหมือนว่าสิ่งเดียวที่จะได้รับคือ. profile (ฉันจะคิดว่ามันจะไปรับสิ่งแวดล้อมได้เช่นกัน) และฉัน แน่นอนเมื่อฉันเห็นผู้ติดตามคนที่สองที่เทอร์มินัลดังนั้นบางสิ่งบางอย่างอาจหายไปนับ แต่นั้นมา Long day .... )


0

ขั้นที่ 1: เปิด ~/.bash_profile

ตอนนี้ตัวแก้ไขข้อความจะเปิดขึ้น:

ขั้นที่ 2: ชื่อตัวแปรควรอยู่ในเมืองหลวง ในตัวแปรตัวอย่างนี้คือNODE_ENV

ขั้นที่ 3: export NODE_ENV=development

บันทึกและปิด

รีสตาร์ทระบบของคุณ

เสร็จสิ้น

วิธีตรวจสอบตัวแปร env: เปิดเทอร์มินัลแล้วพิมพ์

echo $NODE_ENV 

0

ขอแนะนำให้ตรวจสอบเทอร์มินัลเชลล์เริ่มต้นก่อนตั้งค่าตัวแปรสภาพแวดล้อมใด ๆ ผ่านคำสั่งต่อไปนี้:

$ echo $SHELL
/bin/zsh

หากเทอร์มินัลเริ่มต้นของคุณคือ/ bin / zsh (Z Shell) เหมือนในกรณีของฉัน (ส่วนตัวชอบ Z เชลล์) คุณควรตั้งค่าตัวแปรสภาพแวดล้อมเหล่านี้ในไฟล์~ / .zshenvด้วยเนื้อหาต่อไปนี้ (ในตัวอย่างนี้การตั้งค่าตัวแปรสภาพแวดล้อมJAVA_HOMEแต่ใช้กับผู้อื่นด้วย):

export JAVA_HOME="$(/usr/libexec/java_home)"

ประเภทเทอร์มินัลอื่น ๆ ที่ไม่ได้กล่าวถึงข้างต้นคุณควรตั้งค่าตัวแปรสภาพแวดล้อมในไฟล์เทอร์มินัล env ที่เกี่ยวข้อง

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