ฉันจะตั้งค่าตัวแปรสภาพแวดล้อมแบบถาวรสำหรับรูทได้อย่างไร


40

ในการสร้างตัวแปรสภาพแวดล้อมแบบถาวรฉันเพิ่มไฟล์สคริปต์ลงในไดเร็กทอรี /etc/profile.d ตัวอย่างเช่น:

# สคริปต์ของฉัน
ส่งออก MY_VAR = var_value

สิ่งนี้ทำงานได้อย่างถูกต้องสำหรับผู้ใช้ปัจจุบัน:

alex @ alex-64: ~ $ echo $ MY_VAR
var_value

ตอนนี้ฉันต้องการตัวแปรสภาพแวดล้อมที่เหมือนกันสำหรับผู้ใช้รูท แต่สคริปต์ /etc/profile.d ไม่ทำงานสำหรับรูท:

alex @ alex-64: ~ $ echo $ MY_VAR
var_value
alex @ alex-64: ~ $ sudo su
root @ alex-64: / home / alex # echo $ MY_VAR

ราก @ alex-64 / home / alex # 

ฉันจะตั้งค่าตัวแปรเดียวกันสำหรับรูทได้อย่างไร


2
คำถามนี้เกี่ยวกับวิธีการรักษาตัวแปรเฉพาะจากสภาพแวดล้อมของผู้โทรเมื่อsudoมีความเกี่ยวข้องมาก ( แต่มันก็ไม่ได้เป็นที่ซ้ำกันเพราะคำถามนี้เป็นเรื่องเกี่ยวกับวิธีการปรับแต่งรากของตัวเองสภาพแวดล้อม.)
Eliah Kagan

คำตอบ:


44

sudoไม่ปกติรักษาตัวแปรสภาพแวดล้อมท้องถิ่น คุณควรใช้มันกับ-Eสวิตช์ในการทำเช่นsudo -E suจะเก็บเงิน MYVARไว้สำหรับการรูท

/etc/environmentอีกทางเลือกหนึ่งในการสร้างตัวแปรถาวรที่มีทั้งระบบอย่างแท้จริงคุณควรตั้งไว้ใน


14
ไม่ทำงานตัวแปร / etc / environemnt จะไม่ถูกตั้งค่าสำหรับ sudo
Frederic Yesid PeñaSánchez

3
@ FredericYesidPeñaSánchezมันทำให้ฉันใน CentOS คุณไม่ได้เขียนสคริปต์ในนั้นคุณเพียงแค่มอบหมายงานง่าย ๆ ในแต่ละบรรทัดเช่นFOO=bar
iamyojimbo

10

เช่นเดียวกับกระบวนการที่คุณกำหนดตัวแปรสภาพแวดล้อมของคุณเองตัวอย่างเช่นโดยการแก้ไข '~ / .bashrc' คุณสามารถกำหนดตัวแปรสภาพแวดล้อมของรูทได้โดยการแก้ไข '/root/.bashrc'


8

Defaults env_resetในการ/etc/sudoersจะตั้งค่ารากที่กำหนดโดยPATH/etc/environment

คุณสามารถปรับเปลี่ยนเป็นDefaults !env_resetปิดใช้งานการรีเซ็ตหรือเพิ่ม:

Defaults secure_path="my/custom/path:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin

หากฉันต้องการใช้โซลูชันที่สอง (หมายถึงการเพิ่มพา ธ ไปที่ secure_path) คีย์คืออะไร! เส้นทางเป็นเพียงคุณค่า ฉันต้องการเพิ่ม ANDROID_NDK ให้กับตัวแปรสภาพแวดล้อมสำหรับรูท ดังนั้นสำหรับตอนนี้ฉันเพิ่งใช้อันแรก (! env_reset) ขอบคุณ
Dr.jacky
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.