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?
la source
#!/bin/bash
?Réponses:
La solution qui m'a aidé était de forcer le script à s'exécuter en mode interactif avec un en-
#!/bin/bash -i
tête.Advanced Bash-Scripting Guide met en garde contre des conséquences étranges:
Cependant, je n'ai rien observé de tel.
la source
~/.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_ENV
variable d'environnement:la source