Bash: обновить файл и сослаться на него в .bashrc - PullRequest
0 голосов
/ 22 апреля 2019

В настоящее время я размещаю проект Github, который изменяет файл ~ / .bashrc.Поскольку проект постоянно обновляется, мне нужно знать, как обновить файл ~ / .bashrc, не нарушая его полностью.Как обычная вежливость и предотвращение путаницы, изменения, которые я сделал, начинаются с

########## Added by Bash-Shortcuts ##########

и заканчиваются

######### End. https://github.com/OoLunar/Bash-Shortcuts/ ##########

Не совсем уверены, как к этому подойти, идеи?

РЕДАКТИРОВАТЬ : я закончил с использованием ответа @ reichhart и добавил строку:

test -r ~/.Bash-Shortcuts/.commandsrc && . ~/.Bash-Shortcuts/.commandsrc

Это решило мою проблему отлично.

1 Ответ

2 голосов
/ 22 апреля 2019

Подход к решению: sed или другие локальные процессы

Возможная проблема здесь: процесс, модифицирующий .bashrc, может завершиться сбоем, а затем .bashrc может быть поврежден.

Лучшее решение: source внешний файл.

Предполагается, что приложение называется myapplication и работает как пользователь user123. Домашние каталоги ниже /home, как, например, на. Linux (macOS: /Users).

  1. Создать файл ~user123/.myapplicationrc (разрешается в /home/user123/.myapplicationrc). Положите все команды / конфиги для приложения здесь. Сделайте его как минимум читаемым для user123 (бит выполнения НЕ требуется).
  2. Добавьте эту строку в ~user123/.bashrc (is /home/user123/.bashrc) - лучше всего в конце файла: test -r ~/.myapplicationrc && . ~/.myapplicationrc (Точка, пробел, а затем имя файла.)
  3. Дополнительно: в вашем коде установки проверьте, существует ли строка в .bashrc и добавьте ее, если пропустили: fgrep -q .myapplicationrc ~user123/.bashrc || echo 'test -r ~/.myapplicationrc && . ~/.myapplicationrc' >>~user123/.bashrc

Подробнее: Замена источника в ш

РЕДАКТИРОВАТЬ : используйте ~ вместо /home/.... Это «расширение тильды» не работает в старых Bourne или Heirloom Shells. Но все современные оболочки, в том числе маленькие, например, Almquist Shell поддерживает это. На macOS он также работает нормально, но разрешается до /Users/....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...