Menyelesaikan masalah "Command not found" Ralat Semasa Melaksanakan Perintah Unix Melalui Java dengan JSch
Masalah:
Kod Java menggunakan JSch gagal melaksanakan perintah Unix tertentu dengan ralat "perintah tidak ditemui", walaupun dapat melaksanakan perintah mudah lain dengan jayanya. Khususnya, menjalankan graf Ab-initio melalui Java menggunakan perintah "air sandbox run" memberikan ralat.
Punca Kemungkinan:
Saluran "exec" JSch melakukan tidak memperuntukkan terminal pseudo (PTY) secara lalai, mengakibatkan set skrip permulaan yang berbeza diperoleh atau cawangan berbeza dalam skrip diambil berdasarkan ketiadaan pembolehubah persekitaran TERM. Akibatnya, persekitaran mungkin berbeza daripada sesi SSH interaktif, yang berpotensi membawa kepada isu PATH.
Penyelesaian:
-
Betulkan arahan : Gunakan laluan penuh ke "air" boleh laku dalam rentetan arahan untuk mengelakkan bergantung pada pembolehubah persekitaran PATH.
-
Betulkan skrip permulaan: Pastikan skrip permulaan menetapkan PATH sama untuk kedua-dua sesi interaktif dan bukan interaktif.
-
Gunakan shell log masuk: Jalankan arahan melalui shell log masuk (dengan suis "--login") untuk mewarisi pengguna semasa persekitaran.
-
Ubah suai persekitaran: Tukar pembolehubah persekitaran PATH dalam rentetan arahan untuk memasukkan laluan ke boleh laku "udara".
-
Paksa peruntukan PTY (tidak disyorkan): Dayakan peruntukan terminal pseudo untuk saluran "exec" menggunakan kaedah setPty(true). Walau bagaimanapun, ini boleh membawa kepada akibat atau kesan sampingan yang tidak diingini.
Nota Tambahan:
- Melumpuhkan peruntukan terminal pseudo dalam klien SSH boleh menghasilkan semula ralatnya.
- Isu lain yang serupa termasuk perintah yang berkelakuan berbeza dalam JSch berbanding dalam terminal SSH dan kesukaran mendedahkan pembolehubah persekitaran pengguna kepada saluran "exec".
Atas ialah kandungan terperinci Mengapa JSch Melemparkan Ralat 'Perintah tidak dijumpai' Semasa Melaksanakan Perintah Unix, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Kenyataan: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