Функция Bash al (локальный псевдоним) не найдена [закрыто]

Могу ли я иметь псевдонимы bash локально для каталога?

При такой структуре каталогов:

dir1/
  - .
  - ..
  - dir2/
  - file

Когда я cd dir1 псевдоним , например, , не работает, но когда я ] cd dir1 / dir2 / такой псевдоним работает. Определение псевдонима также должно быть локальным и находиться в dir1 / dir2 /

Пример использования: Я программист и использую множество различных вспомогательных инструментов для моих проектов. Я хотел бы сделать для некоторых из них псевдонимы, но большинство из них будут специфичными для проекта / каталога .

Я видел команду al bash, которая могла бы это выполнить, но ее нет в моем Ubuntu (14.04).

1
задан 2 November 2015 в 17:29

1 ответ

Да. Самый простой подход должен был бы иметь файл, где Ваши псевдонимы определяются в каждом каталоге. Так, например:

$ 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 для сброса значений по умолчанию.

1
ответ дан 7 December 2019 в 16:07

Другие вопросы по тегам:

Похожие вопросы: