สถานที่ที่ถูกต้องสำหรับ:
- ตัวแปรสภาพแวดล้อมทั่วโลกหมายถึงการส่งผลกระทบต่อผู้ใช้ทั้งหมดหรือไม่
- ตัวแปรสภาวะแวดล้อมเฉพาะผู้ใช้?
สถานที่ที่ถูกต้องสำหรับ:
คำตอบ:
ฉันคิดว่าหน้าวิกิชุมชนบนตัวแปรสภาพแวดล้อมจะช่วยคุณเรียงลำดับ
เพื่อเพิ่มคำตอบของ sagarchalise ฉันสามารถสรุปสิ่งที่ลิงค์แนะนำเป็นสถานที่ที่เหมาะสมสำหรับการตั้งค่า
/etc/environment
/etc/profile
หรือ/etc/bash.bashrc
จากหน้า:
/etc/environment
[... ] มีความหมายเฉพาะสำหรับการตั้งค่าตัวแปรสภาพแวดล้อมทั้งระบบ ไม่ใช่ไฟล์สคริปต์ แต่ประกอบด้วยนิพจน์การกำหนดหนึ่งรายการต่อบรรทัด ไฟล์นี้จัดเก็บการตั้งค่าโลแคลและพา ธ ทั่วทั้งระบบ
ใช้/etc/profile
เป็นวิธี Unix-y มากไป แต่การทำงานลดลงอย่างมากภายใต้ Ubuntu มันมีอยู่เท่านั้นที่จะชี้ไปและให้รวบรวมรายการจาก/etc/bash.bashrc
/etc/profile.d
ในระบบของฉันรายการเพียงรายการเดียวที่น่าสนใจใน profile.d /etc/profile.d/bash_completion.sh
คือ
แนะนำรุ่นก่อนหน้าของหน้า Ubuntu ~/.pam_environment
แต่หน้าปัจจุบันแนะนำว่าหากไม่ได้ผลคุณควรใช้
~/.profile
- นี่อาจเป็นไฟล์ที่ดีที่สุดสำหรับวางการกำหนดค่าตัวแปรสภาพแวดล้อมเนื่องจากมันจะถูกดำเนินการโดยอัตโนมัติโดย DisplayManager ในระหว่างกระบวนการเดสก์ท็อปกระบวนการเริ่มต้นเช่นเดียวกับโดยเชลล์การเข้าสู่ระบบเมื่อหนึ่งเข้าสู่ระบบจากคอนโซลต้นฉบับ
~/.bash_profile
หรือ~./bash_login
- หากมีสิ่งใดสิ่งหนึ่งเหล่านี้อยู่ bash จะเรียกใช้งานมันแทนที่จะ~/.profile
เริ่มทำงานเมื่อ bash เป็นเชลล์การเข้าสู่ระบบ ทุบตีจะชอบที่จะ~/.bash_profile
~/.bash_login
[... ] ไฟล์เหล่านี้จะไม่มีผลกับเซสชันกราฟิกโดยปริยาย "
~/.bashrc
- "... อาจเป็นตำแหน่งที่ง่ายที่สุดในการตั้งค่าตัวแปร" /etc/environment
และเมื่อใด ดูเหมือนจะไม่ทำงานกับ cron แม้เมื่อใช้SHELL=/bin/bash
/etc/environment
ชอบJAVA_HOME="/opt/java"
และANT_HOME="/opt/ant"
วิธีการใช้งาน
คุณได้:
/ etc / profile: ไฟล์. profile ทั้งระบบสำหรับเชลล์เป้าหมาย (sh (1)) และเชลล์ที่เข้ากันได้กับบอร์น (bash (1), ksh (1), เถ้า (1), ... )
ซึ่งใน Lucid และ Maverick ทำงาน
/etc/profile.d/*.sh
ถ้ามีและถ้าเปลือกของผู้ใช้เป็นทุบตี:
/etc/bash.bashrc
สำหรับสภาพแวดล้อมของผู้ใช้มีอาร์เรย์ที่สับสนเฉพาะกับเชลล์และพิจารณาว่าเป็น "ล็อกอินเชลล์" หรือไม่ หากเปลือกเป็นทุบตี:
~/.bash_profile
The personal initialization file, executed for login shells
~/.bashrc
The individual per-interactive-shell startup file
สำหรับ sh / dash:
$HOME/.profile
ตามที่แนะนำในhttps://help.ubuntu.com/community/EnvironmentVariables :
/etc/environment
ตัวแปรสภาพแวดล้อมของโลกหมายถึงการส่งผลกระทบต่อผู้ใช้ทุกคนควรจะไปใน
~/.pam_environment
ตัวแปรสภาพแวดล้อมเฉพาะของผู้ใช้ควรจะตั้งอยู่ใน
หลีกเลี่ยงโปรไฟล์และไฟล์ rc สำหรับการตั้งค่าตัวแปรสภาพแวดล้อมบน Ubuntu พวกเขาทำให้ฉันปวดหัวมากกว่าที่ควร
นี่พูดง่ายกว่าทำ แต่;)
เป็นไปได้ว่าคุณอาจพบช่องว่างการกำหนดค่าเดียวกันกับที่มีอยู่สำหรับฉัน ดูวิธีแก้ปัญหาสำหรับการเข้ารหัสที่บ้านด้านล่าง
~/.pam_environment
:PATH DEFAULT=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:${HOME}/bin
IDEA_JDK DEFAULT=${HOME}/Applications/jdk
ทำไมเส้นทางแบบคงที่น่าเกลียด? ${PATH}
จะไม่ทำงานสำหรับฉัน ฉันปิดกั้นการเข้าสู่ระบบของฉันหลายครั้งพยายามที่จะหลีกเลี่ยงมันดังนั้นฉันจึงติดกับสำเนาคงที่น่าเกลียดของค่าเริ่มต้น :)
ใน Ubuntu ออกรุ่นและรวมถึงแม่นยำ 12.04 Beta 2 หากคุณใช้ไดเรกทอรีบ้านที่เข้ารหัสคุณจะต้องแก้ไข/etc/pam.d/common-session
เพื่อให้สามารถโหลด~/.pam_environment
ได้ เห็นได้ชัดว่าวิธีนี้ใช้ได้กับรุ่นก่อนหน้า แต่ฉันยังไม่ได้ทดสอบ
ดูเหมือนว่าจะมีปัญหากับไดเรกทอรีบ้านที่เข้ารหัส ฉันเพิ่ม
เซสชันที่ต้องการ pam_env.so
ในตอนท้ายของ /etc/pam.d/common-session และตอนนี้ ~ / .pam_environment ได้รับการอ่าน บนระบบอื่นที่ไม่มีโฮมไดเร็กตอรีที่เข้ารหัส (เช่น 10.04) ไม่จำเป็นต้องแก้ไข บางทีในกรณีของฉันระบบพยายามอ่าน ~ / .pam_environment ก่อนที่มันจะถูกถอดรหัส
ดัดแปลงมาจากคำตอบของฉันสำหรับผู้ใช้ขั้นสูง: https://superuser.com/a/408373/66856
${HOME}
จะไม่ทำงานเช่นกัน .pam_environment
ไม่มีการขยายตัวในการเป็น
.pam_environment
แต่HOME
ไม่ได้ตั้งค่าให้เร็วกว่าปกติ หากบรรทัดนั้นอ่านDEFAULT=${PATH}/Applications/jdk
แล้วคุณจะเห็นคุณค่าของการPATH
แทรกเข้าไป