Як я можу встановити псевдоніми для всіх користувачів?


38

У мене є Ubuntu 14.04.2. Я хочу зробити так, щоб усі користувачі автоматично мали певний набір псевдонімів. У мене особисті псевдоніми встановлені в моєму особистому .bashrc, але я не хочу вручну копіювати їх в інших користувачів. В ідеалі він повинен автоматично встановлювати їх і для новостворених користувачів.


1
Під «попередньою установкою» ви маєте на увазі, що хочете створити всіх нових користувачів за допомогою певних псевдонімів, які вони потім можуть легко переналаштувати? Або ви маєте на увазі, що хочете створити глобальні псевдоніми, щоб усі користувачі мали їх постійно (і змогли їх переосмислити / визначити ..., але не побачити їх, коли вони переглянуть свої власні файли конфігурації, які вони можуть знайти блукаючи)? Або щось інше? Супутнє : Поняття .bashrc та .bash_profile (незважаючи на його незвичну назву, я вважаю, що питання і це насправді досить схоже).
Елія Каган

Відповіді:


50

Ви можете створити сценарій, /etc/profile.d/щоб створити псевдоніми для всіх користувачів:

  1. Створіть файл, який називається 00-aliases.sh(або будь-яке інше фантазійне ім’я) у /etc/profile.d:

    gksu gedit /etc/profile.d/00-aliases.sh
    
  2. Помістіть псевдоніми у цей файл. Приклад:

    alias foo='bar --baz'
    alias baz='foo --bar'
    
  3. Збережіть файл

  4. Перезапустіть будь-які відкриті термінали, щоб застосувати зміни.
  5. Насолоджуйтесь!

Деякі примітки:

  • /etc/profileце глобальний файл, який запускається раніше ~/.profile.
  • /etc/profile.d/ це папка, яка містить сценарії, за якими викликається /etc/profile
  • Коли /etc/profileвикликається (при запуску / вході в оболонку), він шукає будь-які файли, що закінчуються .shна, /etc/profile.d/і запускає їх за допомогою однієї з цих команд:

    source /etc/profile.d/myfile.sh
    

    . /etc/profile.d/myfile.sh
    
  • Я ставлю 00-перед ім'ям файлу, щоб змусити його виконувати перед рештою скриптів.
  • Ви також можете додати псевдоніми /etc/profile, але це не рекомендується.

2
Працює чудово! Чи можете ви дати мені коротке пояснення, яка мета /etc/profile.d?
Брайан Сіземоре

1
@BrianSizemore: Я оновив свою відповідь кількома поясненнями. У вас є запит більше?
Геліо

1
Це дуже добре пояснює це. Роз’яснення допомагає мені розвивати й інші способи використання. Дякую за всю допомогу!
Брайан Сіземоре

4
Метод у цій відповіді не слід застосовувати. Псевдоніми у .shфайлах у /etc/profile.d/(або /etc/profile) визначатимуться лише для оболонок для входу, і вони не працюватимуть в інтерактивних оболонках без входу. На відміну від змінних середовищ, bash не може експортувати псевдоніми до дочірніх процесів, навіть не дочірні оболонки bash. Цей метод може здатися, що він працює належним чином, якщо він перевірений лише в оболонках для входу, наприклад, в оригінальній оболонці, отриманій при вході у віртуальну консоль або через SSH, але він виходить з ладу у своїх дочірніх оболонках, а також не працює в оболонках, запущених вікнами терміналу GUI.
Елія Каган

2
@Helio Моя відповідь на Undertanding .bashrc та .bash_profile дає два інші методи, залежно від того, яка мета, а також детальне пояснення. Я не впевнений, чи те чи інше питання можна вважати дублікатом. Я прокоментував це питання, щоб отримати роз’яснення від ОП щодо їхніх потреб. Це питання є більш вузьким, ніж це питання, тому я вважаю, що було б добре, щоб я розмістив тут коротку відповідь, що охоплює частину мого довгого матеріалу. (Поки що я сподіваюся отримати відповідь ОП на мій коментар.)
Елія Каган

6

Як зазначалося тут , можливо, краще додати глобальні псевдоніми в /etc/bash.bashrc:

alias foo='bar --baz'
alias baz='foo --bar'

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

Дивіться, наприклад, https://askubuntu.com/a/606882/ та розуміння .bashrc та .bash_profile для розмежування оболонок.


5

Псевдонім працюватиме лише тоді, коли знаходиться всередині оболонки. Якщо ви хочете щось таке широке доступне, як виконуваний файл, ви можете додати невеликий сценарій ярлика /usr/bin, наприклад:

#!/bin/sh
ls -l "$@"

"$@"Передає всі аргументи через до виконуваним. Назва сценарію буде іменем виконуваного файлу.

Джерело: https://unix.stackexchange.com/a/52509/15954


Ця відповідь здається не пов'язаною. Прийнята відповідь правильно відповідає на питання, хоча це, здається, забезпечує вирішення проблеми.
Брайан Сіземоре

3
@BrianSizemore У мене було ваше те саме питання, але натрапили на це рішення, яке було більш доречним у моєму випадку; сподіваємось, це допоможе іншим у подібній ситуації. Для багатьох людей псевдонім буде просто чудовим.
jtpereyda

1
@BrianSizemore Ця відповідь роз'яснює поширене неправильне уявлення (яке я також мав) і є корисним і безпосередньо пов’язаним.
a20

0

/ тощо / bashrc

  • Системні функції та псевдоніми
  • Навколишнє середовище надходить у / etc / profile

НЕ БЕЗПЕЧНО міняти цей файл, якщо Ви не знаєте, що Ви робите. Набагато краще створити скрипт оболонки custom.sh в /etc/profile.d/, щоб внести власні зміни у ваше оточення, оскільки це запобіжить необхідність об'єднання в майбутніх оновленнях.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.