ฉันสามารถตั้งค่าบางอย่างที่เป็นสากลสำหรับผู้ใช้ทั้งหมดของฉันได้หรือไม่
ฉันสามารถตั้งค่าบางอย่างที่เป็นสากลสำหรับผู้ใช้ทั้งหมดของฉันได้หรือไม่
คำตอบ:
เช่นเดียวกับ/etc/profileที่คนอื่น ๆ ได้กล่าวถึงบางระบบลินุกซ์ตอนนี้ใช้ไดเรกทอรี/etc/profile.d/; .shไฟล์ใด ๆในนั้นจะมีที่มาจาก/etc/profile. การรักษาสภาพแวดล้อมที่กำหนดเองของคุณไว้ในไฟล์เหล่านี้ดีกว่าการแก้ไขเพียง/etc/profileเล็กน้อย
หาก LinuxOS ของคุณมีไฟล์นี้:
/etc/environmentคุณสามารถใช้เพื่อตั้งค่าตัวแปรสภาพแวดล้อมอย่างถาวรสำหรับผู้ใช้ทุกคน
ดึงมาจาก: http://www.sysadmit.com/2016/04/linux-variables-de-entorno-permanentes.html
หากบริการล็อกอินทั้งหมดใช้PAMและบริการล็อกอินทั้งหมดมีsession required pam_env.soอยู่ใน/etc/pam.d/*ไฟล์คอนฟิกูเรชันตามลำดับเซสชันการล็อกอินทั้งหมดจะมีตัวแปรสภาพแวดล้อมบางอย่างที่กำหนดไว้ในpam_envไฟล์คอนฟิกูเรชันของ
บนลินุกซ์ที่ทันสมัยที่สุดนี้คือทั้งหมดที่มีโดยเริ่มต้น - /etc/security/pam_env.confเพียงแค่เพิ่มตัวแปรสภาพแวดล้อมของโลกที่คุณต้องการที่จะ
สิ่งนี้ใช้งานได้โดยไม่คำนึงถึงเชลล์ของผู้ใช้และใช้ได้กับการเข้าสู่ระบบแบบกราฟิกด้วย (หากตั้งค่า xdm / kdm / gdm / entrance / …เช่นนี้)
echo foo>/home/me/barและรีบูต (และเข้าสู่ระบบอีกครั้ง) ไฟล์นั้นจะไม่ถูกสร้างขึ้น (อาจมีวิธีทดสอบที่ดีกว่านี้ แต่ฉันอยากให้แน่ใจก่อนแสดงความคิดเห็นที่นี่)
                    น่าแปลกใจที่ Unix และ Linux ไม่มีที่สำหรับตั้งค่าตัวแปรสภาพแวดล้อมส่วนกลาง สิ่งที่ดีที่สุดที่คุณทำได้คือจัดให้เชลล์ใด ๆ มีการเริ่มต้นเฉพาะไซต์
หากคุณใส่เข้าไปสิ่ง/etc/profileนั้นจะดูแลสิ่งต่าง ๆ สำหรับผู้ใช้เชลล์ที่เข้ากันได้กับ posix ส่วนใหญ่ สิ่งนี้น่าจะ "ดีพอ" สำหรับวัตถุประสงค์ที่ไม่สำคัญ
แต่ใครก็ตามที่มี cshหรือtcshเชลล์จะไม่เห็นและฉันไม่เชื่อว่าcshมีไฟล์เริ่มต้นส่วนกลาง
/etc/environmentดูเหมือนว่าจะตั้งค่าตัวแปรสภาพแวดล้อมสำหรับฉันแม้ในฐานะผู้ใช้รูท ฉันรู้ว่า/etc/environmentอยู่บน amazon linux และ ubuntu ฉันไม่ได้ตรวจสอบว่าใช้ได้กับ csh, tcsh หรือ zsh หรือไม่
                    ข้อความที่ตัดตอนมาที่น่าสนใจจาก bash manpage:
เมื่อเรียกใช้ bash เป็นเชลล์ล็อกอินแบบโต้ตอบหรือเป็นเชลล์แบบไม่โต้ตอบด้วย
--loginอ็อพชันนั้นก่อนอื่นจะอ่านและเรียกใช้คำสั่งจากไฟล์/etc/profileหากมีไฟล์นั้นอยู่ หลังจากที่ได้อ่านแฟ้มที่จะมองหา~/.bash_profile,~/.bash_loginและ~/.profileในลำดับที่และอ่านและรันคำสั่งจากคนแรกที่มีอยู่และสามารถอ่านได้--noprofileตัวเลือกที่อาจจะนำมาใช้เมื่อเปลือกจะเริ่มต้นในการยับยั้งการทำงานนี้
...
เมื่อเชลล์แบบโต้ตอบที่ไม่ใช่เชลล์ล็อกอินเริ่มทำงาน bash จะอ่านและเรียกใช้คำสั่งจาก/etc/bash.bashrcและ~/.bashrcหากมีไฟล์เหล่านี้ สิ่งนี้อาจถูกยับยั้งโดยใช้--norcตัวเลือก--rcfileตัวเลือกที่ไฟล์จะบังคับทุบตีอ่านและรันคำสั่งจากไฟล์แทนและ/etc/bash.bashrc~/.bashrc
ลองดู/etc/profileหรือ/etc/bash.bashrcไฟล์เหล่านี้เป็นตำแหน่งที่เหมาะสมสำหรับการตั้งค่าส่วนกลาง ใส่สิ่งนี้ลงไปเพื่อตั้งค่าตัวแปรสภาพแวดล้อม:
export MY_VAR=xxxการใช้ PAM นั้นยอดเยี่ยม
# modify the display PAM
$ cat /etc/security/pam_env.conf 
# BEFORE: $ export DISPLAY=:0.0 && python /var/tmp/myproject/click.py &
# AFTER : $ python $abc/click.py &
DISPLAY  DEFAULT=${REMOTEHOST}:0.0 OVERRIDE=${DISPLAY}
abc   DEFAULT=/var/tmp/myprojectทุกกระบวนการที่ทำงานภายใต้เคอร์เนลลินุกซ์จะได้รับสภาพแวดล้อมที่เป็นเอกลักษณ์ของตัวเองซึ่งสืบทอดมาจากพาเรนต์ ในกรณีนี้พาเรนต์จะเป็นเชลล์เอง (วางไข่เชลล์ย่อย) หรือโปรแกรม 'ล็อกอิน' (บนระบบทั่วไป)
เนื่องจากสภาพแวดล้อมของกระบวนการแต่ละกระบวนการได้รับการปกป้องจึงไม่มีวิธีใดที่จะ 'ฉีด' ตัวแปรสภาพแวดล้อมให้กับทุกกระบวนการที่กำลังทำงานอยู่ดังนั้นแม้ว่าคุณจะแก้ไขเชลล์ .rc / โปรไฟล์เริ่มต้นมันจะไม่มีผลจนกว่าแต่ละกระบวนการจะออกและโหลดซ้ำ การตั้งค่าเริ่มต้น
ดูใน / etc / เพื่อแก้ไขตัวแปรเริ่มต้นเริ่มต้นสำหรับเชลล์ใด ๆ เพียงแค่ตระหนักว่าผู้ใช้สามารถ (และมักจะทำ) เปลี่ยนได้ในการตั้งค่าส่วนบุคคล
Unix ได้รับการออกแบบมาเพื่อให้เชื่อฟังผู้ใช้ภายในขีด จำกัด
หมายเหตุ : Bash ไม่ใช่เปลือกเดียวในระบบของคุณ ให้ความสนใจอย่างรอบคอบว่าลิงก์สัญลักษณ์ / bin / sh ชี้ไปที่อะไร ในหลาย ๆ ระบบอาจเป็นเส้นประซึ่งเป็นค่าเริ่มต้น (โดยค่าเริ่มต้นโดยไม่มีการเรียกใช้พิเศษ) ถูกต้อง ดังนั้นคุณควรดูแลแก้ไขค่าเริ่มต้นทั้งสองหรือสคริปต์ที่ขึ้นต้นด้วย / bin / sh จะไม่สืบทอดค่าเริ่มต้นส่วนกลางของคุณ ในทำนองเดียวกันระวังเพื่อหลีกเลี่ยงไวยากรณ์ที่มีเพียงbashเท่านั้นที่เข้าใจเมื่อแก้ไขทั้งสองอย่างหรือที่เรียกavoiding bashismsว่า