'hhighlighter' script invocável dizendo comando não encontrado

1

Eu obtive o script wrapper 'hhighlighter' de link que colore qualquer coisa que você queira em stdout. Eu segui as instruções sobre a instalação do ack-grep, criei o alias para ack = ack-grep em ~ / .bashrc, coloquei a função h () em ~ / .bashrc, tudo funciona bem ao digitar no terminal. Mas ao colocar os mesmos comandos EXATOS em um script bash, ele diz que o comando não foi encontrado. Vou dar exemplos aqui ...

root@kali:~# echo "abcd" | h a b c d
abcd

Aqui está o meu script

#!/bin/bash  
echo "abcd" | h a b c d

Exatamente como o comando digitado, mas aqui está a saída ao executar o script

root@kali:~# ./test.sh
./test.sh: line 1: h: command not found

Como isso pode funcionar ao digitar diretamente no terminal, mas não ao ter exatamente o mesmo comando em um script bash? Se o meu ~ / .bashrc é necessário ou qualquer outra coisa é necessária para resolver isso, por favor me avise, está acontecendo há 4 dias sem descobrir isso.

    
por Will Hughes 25.11.2014 / 01:25

2 respostas

2

O problema é: Quando o bash é iniciado de forma não interativa, ele não lê ~/.bashrc .

Assim, você precisa ler h() do script.

Se você quiser usar aliases em um script, precisará

  1. ativar o uso de aliases no script com shopt -s expand_aliases

  2. defina o alias no script.

Uma alternativa a um alias é definir uma função de shell (que funciona da mesma forma em shells interativos e não interativos):

foo () {
  bar "$@"
}

Mas não é possível assumir o alias ou as definições de função do shell em execução em um script, pois o shell que está executando o script é reinicializado.

    
por 25.11.2014 / 02:37
0

A solução que me ajudou foi forçar o script a ser executado no modo interativo com um #!/bin/bash -i header.

O avançado guia de script de script adverte sobre as consequências estranhas:

Be aware that this can cause erratic script behavior or show error messages even when no error is present.

No entanto, eu não observei nada assim.

    
por 21.04.2016 / 09:58