Java遠(yuǎn)程執(zhí)行shell命令出現(xiàn)java: command not found問題及解決
Java遠(yuǎn)程執(zhí)行shell命令出現(xiàn)java: command not found
問題發(fā)現(xiàn)
在使用jsch遠(yuǎn)程調(diào)用shell命令時(shí),提示java: command not found。
這個(gè)錯(cuò)誤的意思是linux的環(huán)境變量里沒有配置JAVA_HOME的內(nèi)容。
但是我在Linux上查看了一下環(huán)境變量,發(fā)現(xiàn)已經(jīng)配置了。
vim /etc/profile
解決辦法
經(jīng)過(guò)多方查找原因后發(fā)現(xiàn)是因?yàn)檫h(yuǎn)程執(zhí)行shell腳本時(shí),不會(huì)自動(dòng)加載環(huán)境變量,導(dǎo)致出現(xiàn)此錯(cuò)誤,解決方案就是在腳本前加上這段代碼即可。
source /etc/profile;
比如:
source /etc/profile;java -version
多個(gè)命令之間用分號(hào)隔開。
擴(kuò)展補(bǔ)充
執(zhí)行多條命令的分隔號(hào)區(qū)別:
- 每條命令使用";"隔開,則無(wú)論前邊的命令執(zhí)行成功與否都會(huì)繼續(xù)執(zhí)行下一條命令
- 若命令間使用"&&"隔開,則只有前邊的命令執(zhí)行成功了再會(huì)繼續(xù)執(zhí)行后邊的命令
- 若命令間使用"||"隔開,則只有前邊的命令執(zhí)行失敗了再回繼續(xù)執(zhí)行后邊的命令
ssh遠(yuǎn)程報(bào)錯(cuò)java命令找不到
Linux的環(huán)境變量可在多個(gè)文件中配置,如/etc/profile,/etc/profile.d/*.sh,~/.bashrc,~/.bash_profilebash的運(yùn)行模式可以分為login shell 以及non-login shell
直接通過(guò)終端登錄訪問的,輸入用戶名,密碼得到就是一個(gè)login shell,而 “ssh 主機(jī)名 命令” 的方式
這兩種shell的主要區(qū)別在于,它們啟動(dòng)時(shí)會(huì)加載不同的配置文件,login shell啟動(dòng)時(shí)會(huì)加載/etc/profile,~/.bash_profile,~/.bashrc。
non-login shell啟動(dòng)時(shí)會(huì)加載~/.bashrc而在加載/.bashrc(實(shí)際是/.bashrc中加載的/etc/bashrc)或/etc/profile時(shí),都會(huì)執(zhí)行如下代碼片段,
因此不管是login shell還是non-login shell,啟動(dòng)時(shí)都會(huì)加載/etc/profile.d/*.sh中的環(huán)境變量。
因此將JAVA_HOME配置在 /etc/profile 下.
非登錄模式不會(huì)加載其環(huán)境變量下的信息,因此需要將環(huán)境變量下信息盡量配置/etc/profile.d/下,通過(guò)編寫env.sh 將環(huán)境變量維護(hù)在該腳本中
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java實(shí)現(xiàn)Windows計(jì)算器界面
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)Windows計(jì)算器界面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06IDEA安裝部署Alibaba Cloud Toolkit的實(shí)現(xiàn)步驟
Alibaba Cloud Toolkit是阿里云針對(duì)IDE平臺(tái)為開發(fā)者提供的一款插件,本文主要介紹了IDEA安裝部署Alibaba Cloud Toolkit的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08Awaitility同步異步工具實(shí)戰(zhàn)示例詳解
這篇文章主要為大家介紹了Awaitility同步異步工具實(shí)戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08Java開發(fā)中POJO和JSON互轉(zhuǎn)時(shí)如何忽略隱藏字段的問題
這篇文章主要介紹了Java開發(fā)中POJO和JSON互轉(zhuǎn)時(shí)如何忽略隱藏字段的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02SpringBoot使用CommandLineRunner接口完成資源初始化方式
這篇文章主要介紹了SpringBoot使用CommandLineRunner接口完成資源初始化方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02詳解SpringCloud微服務(wù)架構(gòu)之Hystrix斷路器
本篇文章主要介紹了詳解SpringCloud微服務(wù)架構(gòu)之Hystrix斷路器,Hystrix是一個(gè)庫(kù),通過(guò)添加延遲容差和容錯(cuò)邏輯來(lái)幫助您控制這些分布式服務(wù)之間的交互,有興趣的可以了解一下2018-01-01使用Cloud Toolkit在IDEA中極速創(chuàng)建dubbo工程
這篇文章主要介紹了使用Cloud Toolkit在IDEA中極速創(chuàng)建dubbo工程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11