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!