Script du wrapper 'hhighlighter' disant que la commande n'est pas trouvée [fermé]

0

J'ai reçu le script d'emballage 'hhighlighter' à l' adresse https://github.com/paoloantinori/hhighighighter qui colorie tout ce que vous voulez sur stdout. J'ai suivi les instructions pour installer ack-grep, un alias créé pour ack = ack-grep dans ~ / .bashrc, mettre la fonction h () dans ~ / .bashrc, tout fonctionne correctement lorsque vous tapez dans le terminal. Mais lorsque vous placez les mêmes commandes EXACT dans un script bash, il est indiqué que la commande est introuvable. Je vais donner des exemples ici ...

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

Voici à quoi ressemble mon script

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

Exactement comme la commande tapée, mais voici la sortie lors de l'exécution du script

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

Comment cela pourrait-il fonctionner lorsque vous tapez directement dans le terminal, mais pas lorsque vous avez exactement la même commande dans un script bash?

Will Hughes
la source
Est-ce que votre script commence par #!/bin/bash?
Wurtel
J'ai retravaillé la question pour, espérons-le, avoir plus de sens
Will Hughes
Je vote pour fermer cette question car elle a été posée et répondue à l' adresse unix.stackexchange.com/questions/169780/…
Sathyajith Bhat

Réponses:

1

La solution qui m'a aidé était de forcer le script à s'exécuter en mode interactif avec un en- #!/bin/bash -itête.

Advanced Bash-Scripting Guide met en garde contre des conséquences étranges:

Sachez que cela peut entraîner un comportement de script erratique ou afficher des messages d'erreur même en l'absence d'erreur.

Cependant, je n'ai rien observé de tel.

meuleuseX19
la source
0

~/.bashrc n'est lu que lors du démarrage d'une session bash interactive.

Si vous voulez qu'il soit toujours lu, mettez le nom dans la BASH_ENVvariable d'environnement:

export BASH_ENV=$HOME/.bashrc
Wurtel
la source