Во время моей работы мне нужно постоянно добавлять команды псевдонимов в bashrc, большинство из этих команд должны запускаться другими пользователями. Есть ли способ добавить команды псевдонимов в bashrc из внешнего источника?
Много файлов конфигурации в пользовательском корневом каталоге просто переопределяют/добавляют к в /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/as):
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/]
Перейдите в /etc/bash.bashrc
энергия/etc/bash.bashrc
и сделайте свой псевдоним там.
добавьте свой псевдоним в последней строке.
abc псевдонима = "безотносительно"
Тот псевдоним станет глобальным для всех пользователей.
но из соображений безопасности мы не рекомендуем Вам это.
существует profile.d
каталог, который содержит файлы пользовательской среды
перейдите в
CD/etc/profile.d/
псевдонимы энергии
и добавьте свои псевдонимы здесь.
не производя Ваши системные файлы. Это - безопасный и правильный способ работать с Вашими файлами среды.
Здесь уже существует принятый ответ, но Вы могли бы рассмотреть использование некоторой формы модулей среды для обработки конфигурации в масштабе всей системы пользовательских сред вместо того, чтобы смешать с файлами в/etc/profile.d и т.д. Это особенно верно, если Вы хотите справиться с этим управлением в одном месте через большое количество оболочек. Lmod (при очень активной разработке), модули C/TCL (классическое решение), или Cmod (легкий вес).
Не знайте, делаю ли я его правильно, но это работает на меня для хранения/home/ComunAtodos каталога (использованный для своей выгоды и на испанском языке для создания очевидным, что это не собственный каталог Linux), и помещенный .bashrc, .nanorc и .bash_aliases там. Затем я ссылаюсь на тех, которые в/etc/skel/.profile, таким образом, новые пользователи указывают им и только добавляют отдельно оплачиваемые предметы к определенным пользователям, которым нужны они.
Я действительно плохо знаком с Linux operativ система, но я сделал эскиз сценария удара, который работает для изменения всех пользователей .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
Хорошо, таким образом, я знаю, что тот сценарий работает, но я не делаю, если это - свободный отказ :) Также можно изменить его так, это не делает вовлекает всех пользователей, возможно, u делают файл для всех пользователей, которым нужен их .bashrc настроенный файл.
У меня похожий вопрос
#!/bin/bashX='$( cat etc/passwd | cut -f1 -d: )' #All-users
For X in /export/home/*/.bashrc ; do
echo "$HOME/.profile'" >> $X
$X 2>/dev/null
done
source $X
exit 0
но я столкнулся с ошибкой и не печатаю то, что хочу
./
ja1.sh: line 3: syntax error near unexpected token `do'
./ja1.sh: line 3: `For X in /export/home/*/.bashrc ; do '
Основная цель использования этого скрипта для печати $HOME/.profile в файле .bashrc для всех пользователей сразу, используя скрипт для пользователя root. Пробую один скрипт работает только для одного пользователя
echo "$HOME/.profile" >> /export/home/test/.bashrc