Установка временных псевдонимов bash при входе в папку

13

Иногда мне нравится иметь очень настраиваемые псевдонимы bash и, возможно, сочетания клавиш, когда я вхожу в папку (это может быть проект, в котором я использую много команд из CLI).

Предположим, что когда я вхожу в папку типа «projectAlpha /», я ожидаю несколько пользовательских псевдонимов, таких как:

  • alias doTaskX='./app arg1 arg2...|filter arg1 arg2...'
  • ...

Больше, чем это я думал о:

  • Показать полезное сообщение, показывающее псевдонимы и общие команды
  • Отображение некоторых общих пользовательских комбинаций клавиш для моего проекта

Но как только я покидаю корень моего проекта, эти настройки становятся недоступными.

Каков наилучший подход, чтобы сделать это сегодня?

gzinho
источник
сейчас пришла мысль использовать один псевдоним для «cd» в ~ / .bashrc, один псевдоним для входа в один каталог и запускает новый bash, который читает скрытый .bashrc в этом каталоге ...
gzinho
Практически дубликаты: выполнение скриптов bash при входе в каталог
Жиль "ТАК - перестать быть злым"

Ответы:

14

Bash имеет специальную переменную, PROMPT_COMMANDсодержимое которой выполняется каждый раз после выполнения команды, поэтому вы можете установить ее следующим образом:

PROMPT_COMMAND='[[ "$PWD" = /tmp ]] && { alias ll=ls; echo "Remember: ll=ls"; } || { unalias ll 2>/dev/null; }'

Отныне каждый раз, когда вы будете находиться в /tmpкаталоге, llбудет создан псевдоним , а во всех остальных каталогах он будет удален.


Вероятно, более практичным является собрать все ваши псевдонимы и другие вещи в одной функции (скажем makealias) и все псевдонимы в другой функции, makeunaliasкоторые вы можете запустить в зависимости от ваших потребностей, что-то вроде

PROMPT_COMMAND='[[ "$PWD" = /tmp ]] && makealias || makeunalias 2>/dev/null'

Обратите внимание, что перенаправление stderr присутствует только для предотвращения некоторых бесполезных в этом случае предупреждений.

jimmij
источник
Тай, я попробую. +1 (если бы я мог)
gzinho
1
@ user3697611 Вам не нужна репутация, чтобы принять ответ на свой вопрос. Нажмите на галочку рядом с ответом.
Бармар