Rumah > Java > javaTutorial > Mengapa Perintah Unix Tertentu Gagal dengan 'Perintah Tidak Ditemui' Apabila Dilaksanakan melalui Java Menggunakan JSch?

Mengapa Perintah Unix Tertentu Gagal dengan 'Perintah Tidak Ditemui' Apabila Dilaksanakan melalui Java Menggunakan JSch?

Mary-Kate Olsen
Lepaskan: 2024-11-28 02:42:11
asal
237 orang telah melayarinya

Why Do Certain Unix Commands Fail with

Arahan Unix tertentu Gagal dengan Ralat "Command Not Found" Apabila Dilaksanakan melalui Java Menggunakan JSch

Isu ini timbul apabila melaksanakan arahan Unix melalui Java menggunakan perpustakaan JSch. Apabila arahan seperti "air not found" gagal, walaupun berfungsi dalam klien SSH, siasatan lanjut adalah wajar.

Punca Punca:

Tidak seperti sesi SSH interaktif, saluran "exec" dalam JSch tidak memperuntukkan pseudo-terminal. Ini boleh menyebabkan set skrip permulaan yang berbeza dilaksanakan, yang membawa kepada persekitaran yang berbeza. Dalam kes ini, pembolehubah persekitaran PATH mungkin ditetapkan secara berbeza, menyebabkan boleh laku "udara" tidak tersedia.

Penyelesaian:

Terdapat beberapa kaedah untuk menangani perkara ini isu, mengikut keutamaan:

  1. Laluan Penuh Pelaksanaan:
    Gunakan laluan penuh kepada boleh laku dalam arahan, menghapuskan pergantungan pada persekitaran.
  2. Pengubahsuaian Skrip Permulaan:
    Laraskan skrip permulaan untuk menetapkan PATH secara konsisten untuk kedua-dua interaktif dan tidak interaktif sesi.
  3. Pelaksanaan Shell Log Masuk:
    Jalankan arahan secara eksplisit melalui cangkerang log masuk, menggunakan suis --log masuk.
  4. Pengubahsuaian Persekitaran:
    Tukar persekitaran dalam arahan itu sendiri untuk menetapkan PATH yang diperlukan dan/atau lain-lain pembolehubah.
  5. Peruntukan Pseudo-Terminal Paksa:
    (Tidak disyorkan) Paksa peruntukan pseudo-terminal untuk saluran "exec" menggunakan setPty(true), tetapi ketahui tentang sisi yang berpotensi kesan.

Berkaitan Isu:

Isu lain yang serupa telah ditemui dan dibincangkan dalam sumber berikut:

  • Arahan Unix tertentu gagal dengan "... tidak dijumpai", apabila dilaksanakan melalui Java menggunakan JSch walaupun dengan setPty didayakan
  • Perintah yang dilaksanakan menggunakan JSch berkelakuan berbeza daripada di terminal SSH (pintasan mengesahkan mesej gesaan "ya/"tidak")
  • JSch: Adakah terdapat cara untuk mendedahkan pembolehubah persekitaran pengguna kepada saluran "exec"?
  • Arahan (.4gl) dilaksanakan dengan SSH .NET SshClient.RunCommand gagal dengan "Tiada fail atau direktori sedemikian"

Atas ialah kandungan terperinci Mengapa Perintah Unix Tertentu Gagal dengan 'Perintah Tidak Ditemui' Apabila Dilaksanakan melalui Java Menggunakan JSch?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan