Wrapper-Skript 'hhighlighter' mit der Meldung Befehl nicht gefunden [closed]

0

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?

Will Hughes
quelle
Beginnt Ihr Skript mit #!/bin/bash ?
wurtel
Ich überarbeitete die Frage, um hoffentlich mehr Sinn zu machen
Will Hughes
Ich stimme dafür, diese Frage zu schließen, da sie gestellt wurde & amp; antwortete um unix.stackexchange.com/questions/169780/…
Sathyajith Bhat

Antworten:

1

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:

Beachten Sie, dass dies zu fehlerhaftem Skriptverhalten oder zu Fehlern führen kann   Nachrichten, auch wenn kein Fehler vorliegt.

Allerdings habe ich so etwas nicht beobachtet.

grinderX19
quelle
0

~/.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:

export BASH_ENV=$HOME/.bashrc
wurtel
quelle