Standardmäßig wird „Befehl nicht gefunden“ angezeigt, wenn er nach der Deklaration einer Variablen ausgeführt wird.

Standardmäßig wird „Befehl nicht gefunden“ angezeigt, wenn er nach der Deklaration einer Variablen ausgeführt wird.

Warum funktioniert der folgende Code nicht?

#!/bin/sh
PATH=$PWD/Info
defaults read $PATH

Jedes Mal, wenn ich es ausführe, bekomme ich

./script: Zeile 3: Standardeinstellungen: Befehl nicht gefunden

Sobald ich es in einer Zeile mache, funktioniert es

defaults read $PWD/Info

So ist es ok. Ich bin einfach nur neugierig.

Antwort1

Weil Sie ändern $PATH, was eine spezielle Variable ist. Die Shell verwendet PATH zum Suchen nach ausführbaren Programmen. defaultsist wahrscheinlich eines davon, aber nachdem sein Ordner aus PATH entfernt wurde, kann die Shell es nicht mehr ausführen.

Antwort2

Dem Pfad hinzufügen, statt ihn zu ersetzen:

PATH=$PWD/Info:$PATH

verwandte Informationen