Làm cách nào tôi có thể đặt một tệp .bashrc cho nhiều người dùng?


30

trong quá trình làm việc của tôi, tôi cần liên tục thêm các lệnh bí danh vào bashrc, hầu hết các lệnh đó cần được chạy bởi những người dùng khác. Có cách nào để tôi có thể thêm các lệnh bí danh vào bashrc từ nguồn bên ngoài không?

Câu trả lời:


40

Nhiều tệp cấu hình trong thư mục gốc của người dùng chỉ ghi đè / thêm vào tệp trong /etc- ví dụ: cài đặt cho GIMP trong nhà người dùng đang ở ~/.gimp-2.*, bổ sung cho cấu hình toàn hệ thống /etc/gimp/2.0.

Vì vậy, đối với ~/.bashrc, bạn có thể chỉnh sửa các tệp cấu hình trên toàn hệ thống /etc/bash.bashrc (đối với các hàm / bí danh ) hoặc /etc/profile (đối với nội dung môi trường) - bạn có thể liệt kê đầy đủ từ 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

Cảnh báo này được đưa ra cho một vài hệ thống Linux trong các tệp:

# 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.

Vì vậy, bạn có thể chỉnh sửa các tệp đó, trước tiên bạn có thể muốn sao lưu chúng ( cp /etc/bash.bashrc /etc/bash.bashrc-backupví dụ) hoặc tạo tập lệnh shell trong /etc/profile.d- ví dụ: bạn có thể tạo tập tin bằng các lệnh này (với sudo / as root):

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

Sau đó mở nó với nano /etc/profile.d/custom.sh

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

Và kiểm tra xem nó có hoạt động hay không bằng cách xem nó có xuất hiện trong đầu ra của không alias- Lưu ý rằng bạn có thể cần phải đăng xuất / đăng nhập hoặc khởi động lại để xem bất kỳ thay đổi nào (nếu bạn không muốn, chạy source /etc/profilesau khi có bất kỳ thay đổi nào có thể hoạt động)

[chỉnh sửa: xóa liên kết chết này] www.thelinuxdaily.com/2010/08/setup-a-universal-user-profile-with-etcprofile-dcustom-sh/]


5
Có rất nhiều gợi ý tốt ở đó. Tôi nghĩ có một lựa chọn khác, cũng đáng được đề cập đến. Người ta có thể chỉnh sửa /etc/skel/.bashrcđể thay đổi nội dung của ~/.bashrcnhững người dùng mới được tạo.
kasperd

@kasperd - ý tưởng hay (bạn có thể trả lời nếu bạn muốn)
Wilf

Theo kinh nghiệm của tôi, ~/.bash_logout/etc/bash.bash_logoutkhông hoạt động. :(
Paddy Landau

Bí danh AFAIK /etc/profile.d/sẽ không được chọn bởi quy trình phụ phải không? Vậy bí danh chỉ khả dụng khi Bash là vỏ đăng nhập?
Franklin Yu

Tôi nghĩ rằng một số trong số chúng chỉ hoạt động khi được sử dụng để nói TTY là môi trường duy nhất, trong một thiết bị đầu cuối máy tính để bàn, một số trong số chúng có thể không được sử dụng. Tôi phải kiểm tra điều này để xác minh điều này mặc dù và không thể vào lúc này!
Wilf

7

Đi đến /etc/bash.bashrc

vim /etc/bash.bashrc

và làm cho bí danh của bạn ở đó.

thêm bí danh của bạn trong dòng cuối cùng.

bí danh abc = "sao cũng được"

Bí danh đó sẽ trở thành toàn cầu cho tất cả người dùng.

nhưng vì lý do bảo mật, chúng tôi không khuyên bạn điều đó.

profile.dthư mục chứa các tệp môi trường người dùng

đi đến

cd /etc/profile.d/

bí danh vim

và thêm bí danh của bạn ở đây.

mà không ảnh hưởng đến các tập tin hệ thống của bạn. Đó là cách an toàn và đúng cách để làm việc với các tệp môi trường của bạn.


3

Đã có câu trả lời được chấp nhận ở đây, nhưng bạn có thể cân nhắc sử dụng một số dạng mô-đun môi trường để xử lý cấu hình toàn hệ thống của môi trường người dùng thay vì làm rối các tệp trong /etc/profile.d, v.v. Điều này đặc biệt đúng nếu bạn muốn quản lý điều khiển này ở một nơi trên nhiều vỏ. Lmod (dưới sự phát triển rất tích cực), các mô-đun C / TCL (giải pháp cổ điển) hoặc Cmod (nhẹ).


1

Không biết tôi có làm đúng hay không, nhưng tôi giữ một thư mục / home / ComunAtodos (viết hoa và bằng tiếng Tây Ban Nha để làm rõ rằng đó không phải là thư mục gốc linux) và đặt .bashrc, .nanorc và .bash_aliases ở đó. Sau đó, tôi tham chiếu những người trong /etc/skel/.profile để người dùng mới trỏ đến họ và chỉ thêm các tính năng bổ sung cho những người dùng cụ thể cần họ.


-1

Tôi thực sự mới với hệ thống operativ của Linux, nhưng tôi đã phác thảo một tập lệnh bash hoạt động để sửa đổi tất cả các tệp .bashrc của người dùng chứ không phải tệp /etc/.bashrc của hệ thống.

#!/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

Được rồi vì vậy tôi biết rằng tập lệnh đó hoạt động, nhưng tôi không biết nếu nó không có lỗi :) Ngoài ra, bạn có thể sửa đổi nó để nó không liên quan đến tất cả người dùng, có thể bạn tạo một tệp cho tất cả người dùng cần tệp .bashrc của họ tùy chỉnh.


3
Dòng đầu tiên (nơi bạn đọc / etc / passwd) dường như không làm gì cả. Dòng thứ 4 của bạn dường như là một lỗi (và tôi không hiểu tại sao bạn muốn loại bỏ lỗi). "Thoát 0" là dư thừa. Điều này đòi hỏi tất cả người dùng đã có .bashrctệp và luôn luôn xuất hiện bất kể dòng đó đã có trong tệp của họ chưa.
thomasrutter

Tôi đã suy nghĩ để có được tên của tất cả người dùng với dòng đó? Nhưng bây giờ tôi nghĩ về nó, tôi chỉ có thể cắt </ etc / passwd, có rất nhiều tên trong danh sách đó vì vậy tôi không muốn IT tạo ra lỗi cho những người không có bashrc filé. Làm thế nào bạn chỉ có thể nối thêm nếu dòng không tồn tại? Và bạn có thể viết kịch bản phù hợp cho loại rask này không, tôi chỉ mới sử dụng Linux được một tuần.
Farhad Rahimi

Có vẻ như bạn đã có một số kỹ năng nhưng hướng dẫn này là một kỹ năng tốt cho shell script: shellscript.sh . Đối với các câu hỏi khác như làm thế nào để nối một dòng chỉ khi nó không tồn tại, vui lòng hỏi chúng như những câu hỏi mới ở đây.
thomasrutter
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.