首頁 > Java > java教程 > 為什麼 JSch 在執行 Unix 命令時拋出'未找到命令”錯誤,如何修復它?

為什麼 JSch 在執行 Unix 命令時拋出'未找到命令”錯誤,如何修復它?

DDD
發布: 2024-11-14 11:16:02
原創
1028 人瀏覽過

Why Does JSch Throw a

使用JSch 透過Java 執行Unix 指令時出現「找不到指令」錯誤

問題:

問題:

Java 程式碼使用JSch 無法執行某些Unix 指令,並出現「找不到指令」錯誤,儘管能夠成功執行其他簡單指令。具體來說,使用「air sandbox run」指令透過 Java 運行 Ab-initio 圖會出現錯誤。

可能的原因:

JSch“exec”通道確實預設不分配偽終端(PTY),從而導致基於缺少TERM 環境變數而取得一組不同的啟動腳本或在腳本中採用不同的分支。因此,環境可能與互動式 SSH 會話不同,可能導致 PATH 問題。

  1. 解決方案:
  2. 修正指令: 在指令字串中使用「air」以避免可執行檔的完整路徑以避免依賴PATH 環境變數。
  3. 修正啟動腳本:確保啟動腳本為互動式和非互動式會話設定相同的 PATH。
  4. 使用登入 shell: 透過登入 shell(使用「--login」開關)執行指令以繼承目前使用者的環境。
  5. 修改環境:更改指令字串中的 PATH 環境變數以包含「air」執行檔的路徑。

強制 PTY 分配(不建議): 使用 setPty(true) 方法為「exec」通道啟用偽終端分配。但是,這可能會導致意想不到的後果或副作用。

  • 附加說明:
在 SSH 用戶端中停用偽終端分配可以重現錯誤。 其他類似問題包括命令在 JSch 中的行為與在 SSH 終端中的行為不同以及難以公開「exec」通道的使用者環境變數。

以上是為什麼 JSch 在執行 Unix 命令時拋出'未找到命令”錯誤,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板