Как автоматически "найти" ~ / .bashrc после его редактирования? - PullRequest
3 голосов
/ 22 ноября 2011

Я хотел бы создать псевдоним, который делает следующее:

  • Открывает TextMate с помощью ~ / .bashrc и позволяет мне редактировать его
  • Как только я закрою TextMate, «sources» ~ / .bashrc (поэтому, если я добавлю, например, новый псевдоним, он будет доступен немедленно)

Я попробовал следующее:

alias b="/usr/bin/mate -w ~/.bashrc; source ~/.bashrc"

но это не работает: когда я закрываю TextMate, оболочка не возвращается.

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 22 ноября 2011

Стесняюсь предложить это, но если это функция, которую вы действительно хотите, вы можете сделать что-то подобное , установив переменную PROMPT_COMMANDк чему-то умному.

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

Поместите export PROMPT_COMMAND="source ~/.bashrc" в ваш файл ~/.bashrc.Повторно отправляйте его в те сеансы оболочки, в которых вы хотите, чтобы автоматически обновлялось поведение.

Это расточительно - он повторно отправляет файл при каждом запросе.Если вы можете заставить свой редактор оставить старую версию в определенном файле, скажем ~/.bashrc~ (где первый ~ означает ваш домашний каталог, а последний ~ - это просто ~,общий выбор для резервного копирования имен файлов), тогда вы можете сделать что-то более похожее (не проверено):

export PROMPT_COMMAND="[ ~/.bashrc -nt ~/.bashrc~ ] && touch ~/.bashrc~ && source ~/.bashrc "

тогда будет stat(2) два файла при каждом запуске, проверить, какой из них более новый, и повторно получить источниктолько если ~/.bashrc новее, чем его резервная копия.Команда touch используется для того, чтобы сделать резервную копию более новой и снова провалить тест.

1 голос
/ 22 ноября 2011

Вы действительно редактируете свой .bashrc файл так часто, что вам нужен псевдоним для него?Почему бы просто не отредактировать файл, сохранить его, а затем exec bash?

...