Ich habe das Wrapper-Skript 'hhighlighter' von bekommen https://github.com/paoloantinori/hhighlighter welche farben willst du in stdout. Ich habe die Anweisungen zur Installation von ack-grep befolgt, einen Alias für ack = ack-grep in ~ / .bashrc erstellt, die Funktion h () in ~ / .bashrc eingefügt, alles funktioniert einwandfrei, wenn ich im Terminal tippe. Wenn Sie jedoch die gleichen EXACT-Befehle in ein Bash-Skript einfügen, heißt es, dass der Befehl nicht gefunden wurde. Ich werde hier Beispiele geben ...
root@kali:~# echo "abcd" | h a b c d
abcd
So sieht mein Drehbuch aus
#!/bin/bash
echo "abcd" | h a b c d
Genau wie der eingegebene Befehl, aber hier ist die Ausgabe beim Ausführen des Skripts
root@kali:~# ./test.sh
./test.sh: line 1: h: command not found
Wie könnte dies funktionieren, wenn Sie direkt im Terminal tippen, aber nicht, wenn Sie in einem Bash-Skript genau den gleichen Befehl haben?
quelle
#!/bin/bash
?Antworten:
Die Lösung, die mir geholfen hat, war, das Skript zu zwingen, im interaktiven Modus mit einem auszuführen
#!/bin/bash -i
Header.Erweitertes Bash-Scripting-Handbuch warnt über seltsame Konsequenzen:
Allerdings habe ich so etwas nicht beobachtet.
quelle
~/.bashrc
wird nur beim Start einer interaktiven Bash-Sitzung gelesen.Wenn Sie möchten, dass es immer gelesen wird, geben Sie den Namen in das Feld ein
BASH_ENV
Umgebungsvariable:quelle