Могу ли я иметь псевдонимы bash локально для каталога?
При такой структуре каталогов:
dir1/
- .
- ..
- dir2/
- file
Когда я cd dir1
псевдоним , например,
, не работает, но когда я ] cd dir1 / dir2 /
такой псевдоним работает. Определение псевдонима также должно быть локальным и находиться в dir1 / dir2 /
Пример использования: Я программист и использую множество различных вспомогательных инструментов для моих проектов. Я хотел бы сделать для некоторых из них псевдонимы, но большинство из них будут специфичными для проекта / каталога .
Я видел команду al
bash, которая могла бы это выполнить, но ее нет в моем Ubuntu (14.04).
Да. Самый простой подход должен был бы иметь файл, где Ваши псевдонимы определяются в каждом каталоге. Так, например:
$ cat dir1/.alias
alias eg='echo "this is dir1"'
$ cat dir2/.alias
alias eg='echo "this is dir2"'
В примере выше, каждый каталог содержит файл, названный .alias
, где эти eg
псевдоним определяется. Теперь, cd
в одного из них, источник файл и псевдоним становятся доступными:
$ cd dir1 && source .alias
$ eg
This is dir1
$ cd ../dir2 && source .alias
$ eg
This is dir2
, Если Вы хотите сделанный автоматически, добавьте эту строку к Вашему ~/.bashrc
:
## Check if an '.alias' file exists and, if it does, source it.
PROMPT_COMMAND='[ -e .alias ] && source .alias'
PROMPT_COMMAND
переменная определяет команду, которая выполняется, прежде чем каждую подсказку показывают, поэтому после любой команды Вы работаете. Это означает что, как только Вы больше в каталог, который содержит .alias
файл, этот файл, будете получены.
Это небезопасно. Любой код в .alias
файл будет выполнен. Используйте на Ваш собственный риск. Ручной подход намного более безопасен.
Любые псевдонимы, определенные в .alias
, файл все еще будет доступен после отъезда каталога пока они не перезаписываются другим определением псевдонима с тем же именем. Если это - проблема, можно очистить все псевдонимы и затем перезагрузить глобальные с:
unalias -a && . /etc/bash.bashrc && . ~/.bashrc && . ~/.bash_aliases
Для упрощения его сделайте его функцией путем добавления этих строк к Вашему ~/.bashrc
:
clear_aliases(){
unalias -a && . /etc/bash.bashrc && . ~/.bashrc && . ~/.bash_aliases;
}
Вы затем сможете работать clear_aliases
для сброса значений по умолчанию.