ฉันจะตั้งค่าไฟล์. bashrc ไฟล์เดียวสำหรับผู้ใช้หลายคนได้อย่างไร


30

ในระหว่างการทำงานของฉันฉันต้องเพิ่มคำสั่ง alias อย่างต่อเนื่องใน bashrc คำสั่งเหล่านั้นส่วนใหญ่จะต้องถูกเรียกใช้โดยผู้ใช้รายอื่น มีวิธีใดบ้างที่ฉันสามารถเพิ่มคำสั่ง alias ไปยัง bashrc จากแหล่งภายนอก?

คำตอบ:


40

config ไฟล์จำนวนมากในผู้ใช้ไดเรกทอรีบ้านเพียงแทนที่ / สั่งคนใน/etc- ตัวอย่างการตั้งค่าสำหรับคนพิการในผู้ใช้ที่บ้านอยู่ในซึ่งจะเพิ่มการตั้งค่าทั้งระบบ~/.gimp-2.*/etc/gimp/2.0

ดังนั้นสำหรับ~/.bashrcคุณสามารถแก้ไขไฟล์กำหนดค่าทั้งระบบ/etc/bash.bashrc (สำหรับฟังก์ชั่น / นามแฝง ) หรือ/etc/profile (สำหรับเนื้อหาสภาพแวดล้อม) - คุณสามารถดูรายการทั้งหมดจากman bash:

FILES
       /bin/bash
              The bash executable
       /etc/profile
              The systemwide initialization file, executed for login shells
       /etc/bash.bash_logout
              The systemwide login shell cleanup file, executed when a login shell exits
       ~/.bash_profile
              The personal initialization file, executed for login shells
       ~/.bashrc
              The individual per-interactive-shell startup file
       ~/.bash_logout
              The individual login shell cleanup file, executed when a login shell exits
       ~/.inputrc
              Individual readline initialization file

คำเตือนนี้มีให้สำหรับระบบ Linux บางตัวในไฟล์:

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

ดังนั้นคุณสามารถแก้ไขไฟล์เหล่านั้นคุณอาจต้องการสำรองข้อมูลก่อน ( cp /etc/bash.bashrc /etc/bash.bashrc-backupตัวอย่าง) หรือสร้างเชลล์สคริปต์ใน/etc/profile.d- ตัวอย่างเช่นคุณสามารถสร้างไฟล์ด้วยคำสั่งเหล่านี้ (ด้วย sudo / as root):

touch /etc/profile.d/custom.sh
chmod +x /etc/profile.d/custom.sh

จากนั้นเปิดด้วย nano /etc/profile.d/custom.sh

#!/bin/sh
alias ls='ls -lah'

และตรวจสอบว่ามันทำงานโดยดูว่ามันปรากฏในผลลัพธ์ของalias- โปรดทราบว่าคุณอาจต้องออกจากระบบ / เข้าสู่ระบบหรือรีบูตเพื่อดูการเปลี่ยนแปลงใด ๆ (ถ้าคุณไม่ต้องการทำงานsource /etc/profileหลังจากการเปลี่ยนแปลงใด ๆ อาจทำงาน)

[แก้ไข: ลบลิงค์นี้] www.thelinuxdaily.com/2010/08/setup-a-universal-user-profile-with-etcprofile-dcustom-sh/]


5
มีคำแนะนำที่ดีมากมาย ฉันคิดว่ามีอีกตัวเลือกหนึ่งซึ่งน่าจะพูดถึงเช่นกัน หนึ่งสามารถแก้ไข/etc/skel/.bashrcเพื่อเปลี่ยนสิ่งที่เนื้อหาของ~/.bashrcจะมีลักษณะสำหรับผู้ใช้ที่สร้างขึ้นใหม่
kasperd

@kasperd - ความคิดที่ดี (คุณสามารถทำคำตอบกับมันถ้าคุณต้องการ)
วิลฟ์

จากประสบการณ์ของฉัน~/.bash_logoutและ/etc/bash.bash_logoutไม่ทำงาน :(
Paddy Landau

นามแฝงใน AFAIK /etc/profile.d/จะไม่ถูกเลือกโดยกระบวนการย่อยใช่มั้ย ดังนั้นนามแฝงจะใช้ได้เฉพาะเมื่อ Bash เป็นเชลล์เข้าสู่ระบบ?
Franklin Yu

ฉันคิดว่าบางส่วนของพวกเขาทำงานเฉพาะเมื่อมันใช้ในการพูด TTY เป็นสภาพแวดล้อมเท่านั้นในเทอร์มินัลเดสก์ท็อปบางคนอาจไม่ได้ใช้ ฉันจะต้องทดสอบสิ่งนี้เพื่อตรวจสอบว่านี้และไม่สามารถในขณะนี้!
Wilf

7

ไปที่ /etc/bash.bashrc

เป็นกลุ่ม /etc/bash.bashrc

และสร้างนามแฝงของคุณที่นั่น

เพิ่มนามแฝงของคุณในบรรทัดสุดท้าย

นามแฝง abc = "อะไรก็ตาม"

นามแฝงนั้นจะกลายเป็นส่วนกลางสำหรับผู้ใช้ทั้งหมด

แต่เพื่อความปลอดภัยเราไม่แนะนำให้คุณทำ

มีprofile.dไดเร็กทอรีซึ่งมีไฟล์สภาพแวดล้อมผู้ใช้

ไปที่

cd /etc/profile.d/

นามแฝงเป็นกลุ่ม

และเพิ่มชื่อแทนของคุณที่นี่

โดยไม่ส่งผลกระทบต่อไฟล์ระบบของคุณ มันปลอดภัยและถูกต้องในการทำงานกับไฟล์สภาพแวดล้อมของคุณ


3

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


1

ไม่ทราบว่าฉันทำถูกต้องหรือไม่ แต่ใช้งานได้สำหรับฉันที่จะเก็บไดเรกทอรี / home / ComunAtodos (พิมพ์ใหญ่และเป็นภาษาสเปนเพื่อให้เห็นได้ชัดว่าไม่ใช่ไดเรกทอรีของ linux) และใส่. bashrc, .nanorc และ .bash_aliases ที่นั่น จากนั้นฉันจะอ้างอิงผู้ใช้ใน /etc/skel/.profile เพื่อให้ผู้ใช้ใหม่ชี้ไปที่พวกเขาและเพิ่มเฉพาะผู้ใช้ที่ต้องการเท่านั้น


-1

ฉันยังใหม่กับระบบปฏิบัติการ Linux แต่ฉันทำร่างของ bash script ที่ทำงานเพื่อแก้ไขไฟล์. bashrc ของผู้ใช้ทั้งหมดไม่ใช่ไฟล์ระบบ /etc/.bashrc

#!/bin/bash

X=$( cat etc/passwd | cut -f1 -d: ) #All-users

For X in /home/*/.bashrc ; do 

echo "alias ls='ls -al'" >> $X

2>/dev/null

done

source $X

exit 0

โอเคฉันรู้ว่าสคริปต์นั้นใช้งานได้ แต่ฉันทำไม่ได้หากปราศจากข้อผิดพลาด :) นอกจากนี้คุณสามารถแก้ไขได้ดังนั้นจึงไม่เกี่ยวข้องกับผู้ใช้ทั้งหมดบางทีคุณอาจสร้างไฟล์สำหรับผู้ใช้ทั้งหมดที่ต้องการไฟล์. bashrc ที่กำหนดเอง


3
บรรทัดแรก (ที่คุณอ่าน / etc / passwd) ดูเหมือนจะไม่ทำอะไรเลย ดูเหมือนว่าบรรทัดที่ 4 ของคุณเป็นข้อผิดพลาด (และฉันไม่เห็นสาเหตุที่คุณต้องการระงับข้อผิดพลาด) "exit 0" ซ้ำซ้อน สิ่งนี้ต้องการให้ผู้ใช้ทุกคนมี.bashrcไฟล์อยู่แล้วและต่อท้ายเสมอโดยไม่คำนึงว่าบรรทัดนั้นมีอยู่แล้วในไฟล์ของพวกเขา
thomasrutter

ฉันคิดว่าจะรับชื่อผู้ใช้ทั้งหมดด้วยบรรทัดนั้น? แต่ตอนนี้ฉันคิดว่าฉันสามารถตัด </ etc / passwd ได้มากมีชื่ออยู่ในรายชื่อนั้นดังนั้นฉันจึงไม่ต้องการให้ฝ่ายไอทีทำผิดพลาดสำหรับผู้ที่ไม่มี bashrc filé คุณจะต่อท้ายได้อย่างไรถ้าไม่มีบรรทัดอยู่? และคุณสามารถเขียนสคริปต์ที่เหมาะสมสำหรับ rask ประเภทนี้ได้โปรดฉันใช้ Linux เพียงหนึ่งสัปดาห์เท่านั้น
Farhad Rahimi

ดูเหมือนว่าคุณมีทักษะบางอย่าง แต่การกวดวิชานี้เป็นหนึ่งที่ดีสำหรับการเขียนสคริปต์เปลือก: shellscript.sh สำหรับคำถามอื่น ๆ เช่นวิธีต่อท้ายบรรทัดเฉพาะเมื่อยังไม่มีอยู่โปรดอย่าลังเลที่จะถามพวกเขาเป็นคำถามใหม่ที่นี่
thomasrutter
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.