Т.е. чтобы, например, если я нахожусь внутри git-репозитория, то команды git работали бы как-бы напрямую. А вот если снаружи, то алиасы отключаются и вызываются соответствующие shell-команды, если есть.
Попытки засунуть соответствующие строки 'alias=...' в скрипт, вызываемый через 'PROMPT_COMMAND' или '\$(...)' в 'PS1' ничего не дали — ни алиасы, ни переменные в этом случае не пробрасываются в интерактивный шелл...
Хочется странного: включать/выключать алиасы в зависимости от текущего каталога
Модераторы: /dev/random, Модераторы разделов
-
- Сообщения: 167
- Статус: принципиальный дилетант
- ОС: Gentoo Linux
-
- Модератор
- Сообщения: 20348
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Хочется странного: включать/выключать алиасы в зависимости от текущего каталога
Такой вариант не пойдёт?
alias status='$(if [ -d .git ]; then echo git status; else echo status; fi)'
alias status='$(if [ -d .git ]; then echo git status; else echo status; fi)'
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
- Сообщения: 167
- Статус: принципиальный дилетант
- ОС: Gentoo Linux
Re: Хочется странного: включать/выключать алиасы в зависимости от текущего каталога
Т.е. все алиасы будут висеть всегда, хоть и работать в зависимости от данных? Не хотелось бы — кроме гита есть еще пачка вещей, к которым хотелось бы привязаться (cargo, cmake и т.д.).
Иван Шихалев
shikhalev.org
shikhalev.org
-
- Администратор
- Сообщения: 5202
- ОС: Gentoo
Re: Хочется странного: включать/выключать алиасы в зависимости от текущего каталога
Если функции вместо алиасов устроят, то можно так:
Код: Выделить всё
command_not_found_handle() {
local hash="$(md5sum <<< "$PWD")"
local hashes="${hash:0:10}"
[[ -d .git ]] && hashes="$hashes _git"
local cmd="$1"
shift
for hash in $hashes
do
if [[ "$(type -t "${cmd}_${hash}" 2>/dev/null)" == 'function' ]]
then
"${cmd}_${hash}" "$@"
return
fi
done
printf 'Command not found: %s\n' "$cmd" >&2
for hash in $hashes
do
printf 'Function not found: %s\n' "${cmd}_${hash}" >&2
done
false
}
Shell
$ cd /tmp
$ e
Command not found: e
Function not found: e_097306edbb
$ e_097306edbb() { echo hello; }
$ e
hello
$ cd /var/tmp
$ e
Command not found: e
Function not found: e_16db395249
$ mkdir repo
$ cd repo
$ git init
Инициализирован пустой репозиторий Git в /var/tmp/repo/.git/
$ e
Command not found: e
Function not found: e_b9504c3d66
Function not found: e__git
Спасибо сказали:
-
- Сообщения: 167
- Статус: принципиальный дилетант
- ОС: Gentoo Linux
Re: Хочется странного: включать/выключать алиасы в зависимости от текущего каталога
Не знал про
Спасибо, весьма вероятно, что где-то тут решение.
Shell
command_not_found_handle
Иван Шихалев
shikhalev.org
shikhalev.org
-
- Сообщения: 167
- Статус: принципиальный дилетант
- ОС: Gentoo Linux
Re: Хочется странного: включать/выключать алиасы в зависимости от текущего каталога
Дошли руки начать реализовывать свои хотелки — https://github.com/shikhalev/xbash.
Пока работает, как задумано, для git, остальное в планах.
Дельные замечания приветствуются.
Пока работает, как задумано, для git, остальное в планах.
Дельные замечания приветствуются.
Иван Шихалев
shikhalev.org
shikhalev.org
-
- Сообщения: 167
- Статус: принципиальный дилетант
- ОС: Gentoo Linux
Re: Хочется странного: включать/выключать алиасы в зависимости от текущего каталога
Добавил команды для cargo и написал более-менее README.
Иван Шихалев
shikhalev.org
shikhalev.org