Як я можу встановити один .bashrc файл для кількох користувачів?


30

під час своєї роботи мені потрібно постійно додавати псевдонімові команди до bashrc, більшість цих команд потрібно керувати іншими користувачами. Чи є якийсь спосіб я можу додати псевдонімові команди до bashrc із зовнішнього джерела?

Відповіді:


40

Багато конфігураційних файлів у домашньому каталозі користувачів просто переосмислюють / додають до них у /etc- наприклад, налаштування для GIMP в домашньому середовищі користувачів ~/.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 / як 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 - це оболонка для входу?
Франклін Ю

Я думаю, що деякі з них працюють лише тоді, коли його використовують у висловлюванні TTY як єдине середовище, в настільному терміналі деякі з них можуть не використовуватися. Мені доведеться протестувати це, щоб перевірити це, хоча зараз не можу!
Вільф

7

Йти до /etc/bash.bashrc

vim /etc/bash.bashrc

і зробіть там свій псевдонім.

додати псевдонім у останньому рядку.

псевдонім abc = "що завгодно"

Цей псевдонім стане глобальним для всіх користувачів.

але з міркувань безпеки ми вам цього не рекомендуємо.

існує profile.d каталог, який містить файли середовища користувача

йти до

cd /etc/profile.d/

псевдоніми vim

і додайте сюди свої псевдоніми.

не впливаючи на ваші системні файли. Це безпечний і правильний спосіб роботи з файлами навколишнього середовища.


3

Тут вже прийнята відповідь, але ви можете розглянути можливість використання якоїсь форми модулів оточення для обробки конфігурації загальносистемних середовищ, а не для того, щоб возитися з файлами в /etc/profile.d і т.д. Це особливо актуально, якщо ви хочете керуйте цим керуванням в одному місці через багато снарядів. Lmod (в умовах дуже активної розробки), C / TCL модулі (класичне рішення) або Cmod (легкий).


1

Не знаю, чи правильно я це роблю, але мені це допомагає зберігати каталог / home / ComunAtodos (з великої літери та іспанською мовою, щоб зрозуміти, що це не рідний каталог Linux) та поставити .bashrc, .nanorc і .bash_aliases там. Тоді я посилаюсь на тих, хто знаходиться в /etc/skel/.profile, щоб нові користувачі вказували на них і додавали лише додаткові дані конкретним користувачам, які їм потрібні.


-1

Я дійсно новачок в операційній системі Linux, але я зробив ескіз bash-скрипту, який працює на зміну всіх користувачів .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-й рядок, здається, є помилкою (і я не бачу, чому ви хочете придушити помилки). "вихід 0" зайвий. Для цього потрібні всі користувачі, які вже мають .bashrcфайл, і завжди додаються незалежно від того, чи є рядок у їхньому файлі.
thomasrutter

Я думав отримати імена всіх користувачів з цією лінією? Але тепер, коли я думаю про це, я міг би просто вирізати </ etc / passwd, у цьому списку було багато імен, тому я не хотів, щоб ІТ робив помилки для тих, хто не має файлу bashrc. Як можна додати лише те, що рядок не існує? І можу u написати правильний сценарій для цього типу рашків, будь ласка, я використовував Linux лише тиждень.
Фархад Рахімі

Схоже, у вас вже є деякі навички, але цей підручник є хорошим сценарієм для оболонок: shellscript.sh . Для інших питань, наприклад, як додати рядок, лише якщо він ще не існує, сміливо задайте їх як нові запитання тут.
thomasrutter
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.