Рейтинг:0

Рабочий процесс управления bash RC в облачных средах

флаг br

Ранее я не редактировал bashrc на своих облачных серверах. Сервера меняются слишком часто, кажется, усилия того не стоят. Я также не хочу загружать свой локальный bashrc на каждый облачный сервер, потому что в моем локальном bashrc есть много вещей, которые имеют смысл только для моей локальной машины. Но у меня есть определенные псевдонимы и т. д., которые я хотел бы иметь на всех своих облачных серверах. Есть несколько способов, которыми я мог бы управлять этим:

  1. Напишите один bashrc для облачных серверов, а затем всегда заменяйте bashrc по умолчанию этим. Недостаток: если я запущу сервер с другой операционной системой с другим bashrc, я переопределю его содержимое при загрузке?
  2. Я создаю отдельный файл с моим псевдонимом и т. д. и загружаю его на свои серверы, а затем добавляю строку в конец существующего bashrc, которая является источником этого дополнительного файла. Недостатки: немного больше усилий.
  3. Просто копипастите каждый раз, когда я запускаю новый сервер. Недостатки: много усилий.

У кого-нибудь есть хорошее решение или рекомендация? Спасибо.

Рейтинг:1
флаг cn

Это моя установка (высокие начальные накладные расходы, низкие текущие усилия)

  1. создайте репозиторий git для хранения файлов конфигурации и напишите небольшой установочный скрипт для их установки.

    Например, вы можете клонировать репозиторий в ~/src/my_config и скрипт установки перезапишет (или символическую ссылку) ~/.bashrc к ~/src/my_config/.bashrc

    Это делает работу с новыми средами довольно простой: вам просто нужно

    git клонировать $repo_url
    ./my_config/install.sh
    

    Это не совсем так: на удаленной машине вам также потребуется ssh-keygen и добавьте новый открытый ключ в свою учетную запись на хосте git.

  2. создать ~/.bash.d каталог. Добавьте это в свой .bashrc

    для файла в ~/.bash.d/*.bash; делать
        если [[ -r "$file" ]]; тогда
            . "$ файл"
        фи
    сделано
    

    Это позволяет вам поместить такие вещи, как определение приглашения, в отдельный файл: ~/.bash.d/prompt.bash. Мне нравится это, чтобы мой .bashrc был небольшим, так как я использую множество функций в своей интерактивной оболочке.

  3. Для каждой среды создайте ~/.bash.d/$(имя хоста) каталог. Добавьте это в свой .bashrc

    для файла в ~/.bash.d/$(hostname)/*.bash; делать
        если [[ -r "$file" ]]; тогда
            . "$ файл"
        фи
    сделано
    

    Все вещи, которые строго локальны для конкретной машины, могут храниться отдельно.

    Здесь прекрасно работают символические ссылки: если все ваши серверы AWS используют одинаковую настройку, вы можете создать ~/.bash.d/AWS и связать с ним все конкретные имена хостов.

Эта система работала очень хорошо для меня. Я добавляю что-то новое, отправляю изменения в git, а на удаленных системах — в git pull, чтобы подобрать новый код.


Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.