Maison > Java > javaDidacticiel > Pourquoi JSch génère-t-il une erreur « Commande introuvable » lors de l'exécution de commandes Unix et comment puis-je la corriger ?

Pourquoi JSch génère-t-il une erreur « Commande introuvable » lors de l'exécution de commandes Unix et comment puis-je la corriger ?

DDD
Libérer: 2024-11-14 11:16:02
original
1028 Les gens l'ont consulté

Why Does JSch Throw a

Dépannage des erreurs « Commande introuvable » lors de l'exécution de commandes Unix via Java avec JSch

Problème :

Code Java utilisant JSch ne parvient pas à exécuter certaines commandes Unix avec une erreur « commande introuvable », bien qu'il soit capable d'exécuter avec succès d'autres commandes simples. Plus précisément, l'exécution d'un graphique Ab-initio via Java à l'aide de la commande "air sandbox run" donne l'erreur.

Cause possible :

Le canal "exec" de JSch le fait n'alloue pas de pseudo-terminal (PTY) par défaut, ce qui entraîne la création d'un ensemble différent de scripts de démarrage ou la prise de différentes branches dans les scripts en fonction de l'absence de la variable d'environnement TERM. Par conséquent, l'environnement peut différer d'une session SSH interactive, conduisant potentiellement à un problème de PATH.

Solutions :

  1. Corrigez la commande : Utilisez un chemin complet vers l'exécutable "air" dans la chaîne de commande pour éviter de vous fier à la variable d'environnement PATH.
  2. Corrigez les scripts de démarrage : Assurez-vous que les scripts de démarrage définissent le PATH la même chose pour les sessions interactives et non interactives.
  3. Utilisez un shell de connexion : Exécutez la commande via un shell de connexion (avec le commutateur "--login") pour hériter du nom de l'utilisateur actuel. environnement.
  4. Modifiez l'environnement : Modifiez la variable d'environnement PATH dans la chaîne de commande pour inclure le chemin d'accès à l'exécutable "air".
  5. Forcer l'allocation PTY (non recommandé) : Activez l'allocation de pseudo-terminal pour le canal "exec" à l'aide de la méthode setPty(true). Cependant, cela peut entraîner des conséquences ou des effets secondaires inattendus.

Remarques supplémentaires :

  • La désactivation de l'allocation du pseudo-terminal dans un client SSH peut reproduire l'erreur.
  • D'autres problèmes similaires incluent des commandes se comportant différemment dans JSch que dans les terminaux SSH et des difficultés à exposer les variables d'environnement utilisateur au canal "exec".

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal