Unix-Befehle schlagen mit dem Fehler „Nicht gefunden“ fehl, wenn sie über JSch in Java ausgeführt werden
Beim Ausführen von Unix-Befehlen über Java mit JSch werden bestimmte Befehle angezeigt kann mit der Fehlermeldung „nicht gefunden“ fehlschlagen. Dies kann aufgrund verschiedener Faktoren im Zusammenhang mit Umgebungsvariablen und Shell-Initialisierungsskripten auftreten.
Verstehen des Problems:
Der „exec“-Kanal in JSch weist normalerweise keinen zu Pseudoterminal (PTY), was zu Unterschieden in den Umgebungseinstellungen im Vergleich zu einer interaktiven SSH-Sitzung führen kann. Infolgedessen sind wichtige Umgebungsvariablen, wie z. B. die PATH-Variable, möglicherweise nicht richtig eingestellt, damit der Befehl erfolgreich ausgeführt werden kann.
Mögliche Ursachen:
- Die Umgebungsvariable PATH ist für interaktive und nicht interaktive Sitzungen unterschiedlich eingestellt, was dazu führt, dass die ausführbare Air-Datei nicht gefunden wird.
- Startskripte können unterschiedliche Inhalte enthalten Logik basierend auf der Verfügbarkeit der TERM-Umgebungsvariablen, die nicht in einer nicht interaktiven Sitzung festgelegt wird.
Lösungsoptionen:
-
Geben Sie den vollständigen Pfad an:
Verwenden Sie den vollständigen Pfad zur ausführbaren Air-Datei im Befehl, um eine Abhängigkeit von der PATH-Umgebung zu vermeiden Variable.
-
Startskripte korrigieren:
Ändern Sie die Startskripte, um sicherzustellen, dass der PFAD für interaktive und nicht interaktive Sitzungen gleich eingestellt ist.
-
Mit Login-Shell ausführen:
Führen Sie den Befehl mit einer Login-Shell aus, z. B. bash --login, die eine gewährleistet richtige Umgebungseinrichtung.
-
Umgebungsvariablen im Befehl festlegen:
Ändern Sie den Befehl, um die Umgebungsvariable PATH explizit festzulegen, bevor Sie den Luftbefehl ausführen.
-
PTY-Zuweisung aktivieren:
Erzwingen Sie die Zuweisung eines Pseudo-Terminals mithilfe der .setPty-Methode im „exec“-Kanal. Dieser Ansatz wird jedoch aufgrund möglicher Nebenwirkungen nicht empfohlen.
Ähnliche Probleme bei der Fehlerbehebung:
- Bestimmte Unix-Befehle schlagen mit „nicht gefunden“ fehl. Fehler auch bei aktivierter PTY-Zuweisung
- Befehle, die mit JSch ausgeführt werden, unterscheiden sich im Verhalten im Vergleich zu SSH Terminal
- Benutzerumgebungsvariablen für den „exec“-Kanal verfügbar machen
- Befehlsausführungsfehler mit „Keine solche Datei oder kein solches Verzeichnis“ mit SSH.NET
Das obige ist der detaillierte Inhalt vonWarum schlagen Unix-Befehle mit der Fehlermeldung „Nicht gefunden' fehl, wenn sie über JSch in Java ausgeführt werden?. 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