Как я могу установить один файл .bashrc для нескольких пользователей?

30

во время моей работы мне нужно постоянно добавлять команды псевдонимов в bashrc, большинство этих команд должны запускаться другими пользователями. Есть ли способ добавить команды псевдонимов в bashrc из внешнего источника?

user309584
источник

Ответы:

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 - хорошая идея (вы могли бы сделать ответ на него , если вы хотите)
Уилф
По моему опыту ~/.bash_logoutи /etc/bash.bash_logoutне работает. :(
Пэдди Ландау
AFAIK псевдоним в /etc/profile.d/будет не подхвачен подпроцесс правом? То есть псевдоним доступен только тогда, когда Bash является оболочкой для входа?
Франклин Ю
Я думаю, что некоторые из них работают только тогда, когда они используются в TTY в качестве единственной среды, в настольном терминале некоторые из них могут не использоваться. Я должен проверить это, чтобы проверить это, хотя и не могу в данный момент!
Уилф
7

Перейти к /etc/bash.bashrc

vim /etc/bash.bashrc

и сделать свой псевдоним там.

добавьте свой псевдоним в последней строке.

псевдоним abc = "что угодно"

Этот псевдоним станет глобальным для всех пользователей.

но по соображениям безопасности мы не рекомендуем это вам.

есть profile.dкаталог, который содержит файлы пользовательской среды

перейти к

cd /etc/profile.d/

vim aliases

и добавьте свои псевдонимы здесь.

без влияния на ваши системные файлы. Это безопасный и правильный способ работы с файлами вашей среды.

Dishank Jindal
источник
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), похоже, ничего не делает. Ваша четвертая строка кажется ошибкой (и я не понимаю, почему вы хотите подавлять ошибки). «Выход 0» является избыточным. Это требует, чтобы у всех пользователей уже был .bashrcфайл, и всегда добавляется независимо от того, находится ли строка в их файле.
Томасруттер
Я думал, чтобы получить имена всех пользователей с этой строкой? Но теперь, когда я подумал об этом, я мог просто сделать cut </ etc / passwd, в этом списке было много имен, поэтому я не хотел, чтобы ИТ-специалисты допускали ошибки для тех, у кого нет bashrc filé. Как вы можете добавить, только если линия не существует? И не могли бы вы написать подходящий скрипт для этого типа rask, пожалуйста, я использую Linux только неделю.
Фархад Рахими
Похоже, у вас уже есть некоторые навыки, но этот урок хорош для сценариев оболочки: shellscript.sh . По другим вопросам, таким как, как добавить строку, только если она еще не существует, не стесняйтесь задавать их в качестве новых вопросов здесь.
Томасруттер