Fehlerbehebung „Befehl nicht gefunden“-Fehler beim Ausführen von Unix-Befehlen über Java mit JSch
Problem:
Java-Code verwendet JSch führt bestimmte Unix-Befehle nicht mit der Fehlermeldung „Befehl nicht gefunden“ aus, obwohl es andere einfache Befehle ausführen kann erfolgreich. Insbesondere das Ausführen eines Ab-initio-Diagramms über Java mit dem Befehl „air sandbox run“ führt zu dem Fehler.
Mögliche Ursache:
Der JSch-„exec“-Kanal funktioniert nicht Ordnen Sie standardmäßig kein Pseudoterminal (PTY) zu, was dazu führt, dass aufgrund der Abwesenheit der TERM-Umgebung ein anderer Satz von Startskripten als Quelle oder unterschiedliche Zweige in Skripten verwendet werden variabel. Daher kann sich die Umgebung von einer interaktiven SSH-Sitzung unterscheiden, was möglicherweise zu einem PATH-Problem führt.
Lösungen:
-
Korrigieren Sie den Befehl : Verwenden Sie einen vollständigen Pfad zur ausführbaren Datei „air“ in der Befehlszeichenfolge, um eine Abhängigkeit von der PATH-Umgebung zu vermeiden Variable.
-
Startskripte korrigieren:Stellen Sie sicher, dass Startskripte den PATH sowohl für interaktive als auch für nicht interaktive Sitzungen gleich festlegen.
-
Verwenden Sie eine Login-Shell: Führen Sie den Befehl über eine Login-Shell aus (mit dem Schalter „--login“), um die des aktuellen Benutzers zu erben Umgebung.
-
Ändern Sie die Umgebung:Ändern Sie die Umgebungsvariable PATH in der Befehlszeichenfolge, um den Pfad zur ausführbaren Datei „air“ einzuschließen.
-
PTY-Zuweisung erzwingen (nicht empfohlen): Aktivieren Sie die Pseudo-Terminalzuweisung für den „exec“-Kanal mithilfe der setPty(true)-Methode. Dies kann jedoch zu unbeabsichtigten Folgen oder Nebenwirkungen führen.
Zusätzliche Hinweise:
- Das Deaktivieren der Pseudo-Terminalzuweisung in einem SSH-Client kann reproduzieren der Fehler.
- Andere ähnliche Probleme umfassen Befehle, die sich in JSch anders verhalten als in SSH-Terminals und Schwierigkeiten beim Offenlegen von Benutzerumgebungsvariablen „exec“-Kanal.
Das obige ist der detaillierte Inhalt vonWarum gibt JSch beim Ausführen von Unix-Befehlen den Fehler „Befehl nicht gefunden' aus und wie kann ich ihn beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!