Estou tentando configurar o history
pager fish para bat -l fish
realce de sintaxe. (ou seja, defina a PAGER
variável de ambiente bat -l fish
apenas para o history
comando).
Tentei:
# 1:
alias history "PAGER='bat -l fish' history"
# results in "The function “history” calls itself immediately, which would result in an infinite loop"
# 2:
alias history "PAGER='bat -l fish' \history"
# results in the same.
# 3:
alias _old_history history
alias history "PAGER='bat -l fish' _old_history"
# results in (line 1): The call stack limit has been exceeded
Estou ciente de que abbr
funciona neste caso, mas isso muda meu history
comando e não é isso que eu quero.
Duas coisas estão acontecendo aqui:
alias
realmente cria uma função.Então, quando você escreve
o que você realmente tem é a função recursiva
Algumas soluções:
use um nome diferente para seu alias
Não faça isso
alias _old_history hist
, mas copie-oSe você não se importa em manter a função do peixe, invoque o comando interno de histórico em sua própria função
Presumo que os designers dos peixes não acharam que isso fosse uma parte essencial da funcionalidade do histórico. Presumo que eles colocaram o material voltado para o usuário em uma função que os usuários podem substituir.
Aqui está o trecho relevante da função de histórico padrão:
Consegui usar
functions -c
para copiar a função internahistory
. Acontece quealias
estava apenas criando umahistory
função que chama a si mesma, enquantofunctions -c
copia totalmente a função.(aqui está a versão final que acabei usando na minha configuração:
)