การอ้างอิงตัวแปรสภาพแวดล้อม * ใน * / etc / environment?


19

ฉันเพิ่งค้นพบ/etc/environmentซึ่งดูเหมือนจะเป็นวิธีมาตรฐานในการตั้งค่าตัวแปรสภาพแวดล้อมแบบง่ายกว่าสคริปต์ แต่ฉันสงสัยว่ามีวิธีการอ้างอิงตัวแปรสภาพแวดล้อมในไฟล์ / etc / environment หรือไม่

นั่นคือฉันมีสิ่งนี้:

JAVA_HOME="/tools/java"
GRAILS_HOME="/tools/grails"
GROOVY_HOME="/tools/groovy"
GRADLE_HOME="/tools/gradle"
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

ถ้าฉันพยายามที่จะเพิ่ม$JAVA_HOME/binคำจำกัดความของเส้นทางฉันจะได้รับ $ JAVA_HOME / bin ไม่ใช่ตัวแปร interpolated เพื่อแก้ไขปัญหานี้ฉันกำลังสร้าง environment.sh ใน profile.d เพื่อเพิ่ม/binรายการในเส้นทาง แต่ดูเหมือนว่าจะเลอะเทอะและไม่เป็นระเบียบ

มีวิธีการย้อนกลับของตัวแปรสภาพแวดล้อมใน / etc / environment หรือไม่?

คำตอบ:


13

/etc/environmentไฟล์จะถูกอ่านโดยโมดูลpam_env PAM รองรับเฉพาะคู่ค่าคีย์อย่างง่ายโดยไม่มีการทดแทนทางด้านขวามือ

หากคุณต้องการสร้างมูลค่าด้วยการทดแทนหรือการขยายเชลล์อื่น ๆ คุณต้องผ่านเชลล์ /etc/profile(หรือไฟล์ใน/etc/profile.d) เป็นสถานที่ที่เหมาะสมสำหรับสิ่งเหล่านี้ นี่เป็นสถานที่ดั้งเดิม ( /etc/environmentเป็นนวัตกรรมที่ค่อนข้างใหม่ในประวัติศาสตร์ของระบบยูนิกซ์) และไม่มีอะไรที่เลอะเทอะเกี่ยวกับการใช้งาน ประโยชน์หลักของ/etc/environmentมันคือช่วยให้สามารถตั้งค่าตัวแปรสภาพแวดล้อมได้แม้จะมีวิธีการเข้าสู่ระบบที่ไม่เกี่ยวข้องกับเชลล์หรือสำหรับผู้ใช้ที่ใช้เชลล์ที่ไม่ใช่บอร์น แต่สิ่งเหล่านี้ไม่ใช่เรื่องธรรมดาในทางปฏิบัติ


หากไม่มีการเปลี่ยนตัวคุณจะได้รับความซ้ำซ้อน/etc/environmentมากมายฉัน/etc/profileขอขอบคุณสำหรับคำแนะนำของคุณ
SAFX

2

เอกสาร Ubuntu ทำให้สิ่งนี้เป็นไปไม่ได้ แต่มีคำตอบคือ

คำตอบ : สร้างตัวแปรสภาพแวดล้อมทั้งระบบแบบถาวร/etc/.bashrc

JAVA_HOME="/tools/java"
...
PATH="$JAVA_HOME:$PATH"  

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

เอกสารยังคงมี 2 อื่น ๆ "ไม่แนะนำ" ไฟล์และ
/etc/profile/etc/bash.bashrc

/etc/profilemsgstr "ทำมากกว่าเรียกไฟล์ /etc/bash.bashrc" #:. ดังนั้นแทนที่จะเลือก

/etc/bash.bashrc เนื่องจาก "Ubuntu ถูกกำหนดค่าตามค่าเริ่มต้นให้เรียกใช้ไฟล์นี้เมื่อใดก็ตามที่ผู้ใช้เข้าสู่เชลล์หรือสภาพแวดล้อมเดสก์ท็อป"


ฉันได้อัพเดตEnvironmentVariables โดยปรึกษากับนักพัฒนา Ubuntu บางคนดังนั้นคำสั่ง "ไม่แนะนำ" จึงไม่มีอยู่อีกต่อไป
Gunnar Hjalmarsson

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