ตั้งค่า PATH สำหรับผู้ใช้ทั้งหมดใน Debian อย่างไร


25

ฉันมีเซิร์ฟเวอร์ Debian Lenny และฉันต้องการให้www-dataผู้ใช้มี/usr/local/zend/binใน PATH ดังนั้นจึงสามารถเรียกใช้สคริปต์ใน cron www-dataได้

ฉันจะเพิ่ม/usr/local/zend/binเส้นทางเพื่อให้www-dataสามารถ execuate ไฟล์ใน/usr/local/zend/bin?

คำตอบ:


40

/etc/login.defsสถานที่แรกที่มีการตั้งค่าเส้นทางคือ มีการตั้งค่าสำหรับรูทและการตั้งค่าสำหรับคนอื่น ๆ

อีกที่หนึ่งที่คุณสามารถกำหนดตัวแปรสภาพแวดล้อม/etc/environmentได้ การตั้งค่าเหล่านี้จะมีผลกับทุกคน (คุณไม่สามารถเขียนรหัสเชลล์โดยพลการได้)

สถานที่ที่สามที่คุณสามารถกำหนดตัวแปรสภาพแวดล้อม/etc/profileได้ มีคุณสามารถเขียนรหัสเปลือกโดยพลการ ~www-data/.profileหากคุณต้องการการตั้งค่าเฉพาะของผู้ใช้มีความสอดคล้องกันไฟล์ต่อผู้ใช้ แต่สิ่งนี้จะใช้กับการล็อกอินคอนโซลแบบโต้ตอบเท่านั้น โดยเฉพาะอย่างยิ่งมันจะไม่นำไปใช้กับงาน cron /etc/profileจนกว่าพวกเขาอย่างชัดเจนแหล่งที่มา

หากคุณต้องการเพียงPATHการตั้งค่านั้นใน crontab ผู้ใช้คุณสามารถเขียนได้ที่จุดเริ่มต้นของ crontab โปรดทราบว่าคุณต้องการรายการทั้งหมด ( PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/zend/bin) คุณไม่สามารถใช้การทดแทนตัวแปร ( PATH=$PATH:/usr/local/zend/binจะไม่ทำงานที่นั่น)


---- คุณจะรีโหลดอย่างไรเช่น /etc/login.defs?
MrCalvin

@MrCalvin โดยการเข้าสู่ระบบ
Gilles 'SO- หยุดความชั่วร้าย'

1
มีเหตุผลใดบ้างที่/etc/login.defsจะถูกเพิกเฉย? ฉันได้อัปเดตENV_PATHและกำลังสะท้อน $ PATH เมื่อโหลด. bashrc บางที่ตรงกลางมันอาจมีการเปลี่ยนแปลงหรือไม่ได้รับการปรับปรุงตามที่แสดงค่าเก่า ฉันรีสตาร์ทคอมพิวเตอร์ - ดังนั้นจึงไม่เป็นเช่นนั้น
Annan

@ โอกาสอันนันคือว่ามันมีการเปลี่ยนแปลงบางแห่ง โปรดทราบว่าคำตอบของฉันถูกเขียนในปี 2010 ก่อนที่ systemd; หากระบบของคุณใช้ systemd มันอาจมีวิธีของตัวเองในการกำหนดPATHเพิ่มเติมหรือทดแทนวิธีอื่น
Gilles 'หยุดชั่วร้าย'

8

การกำหนดเส้นทางสำหรับผู้ใช้ทั้งหมดยกเว้นรากแก้ไขหรือ/etc/profile /etc/enviromentสำหรับรูทหรือผู้ใช้แต่ละรายให้แก้ไข.bashrcหรือ.bash_profileในโฮมไดเร็กตอรี่ตามลำดับ PATH=$PATH:/new/location/เพิ่ม


1

ในการตั้งค่า var สำหรับผู้ใช้ทุกคนโดยไม่ต้องเป็นภาระprofileคุณสามารถเพิ่มสคริปต์ขนาดเล็กของคุณเองลงใน/etc/profile.dไดเรกทอรีดังนี้

echo 'PATH="/usr/local/zend/bin:$PATH"' > /etc/profile.d/zend_path.sh

จากนั้น relogin


1

nano / etc / profile

เพิ่มบรรทัดเหล่านี้ในตอนท้ายของไฟล์:

ส่งออก JAVA_HOME = / opt / jdk-12.0.1

ส่งออก MAVEN_HOME = / opt / apache-maven-3.6.1

ส่งออก M2_HOME = / opt / apache-maven-3.6.1

ส่งออก M2 = / opt / apache-maven-3.6.1 / bin

ส่งออก PATH = $ JAVA_HOME / bin: $ M2: $ PATH

บันทึกไฟล์ รีสตาร์ทหรือใช้คำสั่งด้านล่าง:

source / etc / profile

ทดสอบการตั้งค่าของคุณ:

echo $ JAVA_HOME

javac - รุ่น

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