Heim >Java >javaLernprogramm >Warum gibt JSch beim Ausführen von Unix-Befehlen den Fehler „Befehl nicht gefunden' aus und wie kann ich ihn beheben?

Warum gibt JSch beim Ausführen von Unix-Befehlen den Fehler „Befehl nicht gefunden' aus und wie kann ich ihn beheben?

DDD
DDDOriginal
2024-11-14 11:16:021035Durchsuche

Why Does JSch Throw a

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:

  1. 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.
  2. Startskripte korrigieren:Stellen Sie sicher, dass Startskripte den PATH sowohl für interaktive als auch für nicht interaktive Sitzungen gleich festlegen.
  3. 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.
  4. Ändern Sie die Umgebung:Ändern Sie die Umgebungsvariable PATH in der Befehlszeichenfolge, um den Pfad zur ausführbaren Datei „air“ einzuschließen.
  5. 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn