shell 在脚本中执行了source /etc/profile 不生效

#!/bin/bashecho"exportJAVA_HOME=/home/java/jdk1.8.0_144">>/etc/profileecho"exportPATH... #!/bin/bash
echo "export JAVA_HOME=/home/java/jdk1.8.0_144" >> /etc/profile
echo "export PATH=$PATH:$JAVA_HOME/bin" >> /etc/profile
source /etc/profile
java -version

该代码在shell执行完成后在使用java -version 的时候就提示 ,无法找到该命令了
需求:在shell完成后 Linux的控制台中输入java -version 依旧有效
展开
 我来答
捕获1688
2019-07-24
知道答主
回答量:1
采纳率:0%
帮助的人:720
展开全部
好像是source /etc/profile只在当前会话生效,而且shell和打开的当前会话不是同一个会话,重新source /etc/profile后就可以生效了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
良玉小帝
2017-11-01 · 个人日常精心汇总合集
良玉小帝
采纳数:5925 获赞数:9451

向TA提问 私信TA
展开全部
cat /etc/profile
看看你echo进去了啥
source /etc/profile
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
拼凑不回的童年
2018-07-24
知道答主
回答量:5
采纳率:0%
帮助的人:5133
展开全部
我也遇到一样的问题,脚本里面执行了source /etc/profile,然后在脚本里面打印版本信息是有效的;然后回到控制台发现打印不出版本信息,重新在控制台source一下又可以了。
系统:乌班图 16.04 不明所以啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友4b56d2e
2018-07-23
知道答主
回答量:9
采纳率:0%
帮助的人:3.7万
展开全部
我也遇到同样的问题,用sh命令执行source /etc/profile后,不生效,但在控制台执行此命令则生效,为什么?我不想不明白。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cn2378
2018-01-30 · 超过10用户采纳过TA的回答
知道答主
回答量:30
采纳率:100%
帮助的人:11.3万
展开全部
这个source命令我们直接手动执行,会自动退出当前会话再进入当前会话.
如果用脚本执行后,在脚本内部生效,脚本走的是一个子bash,
解决办法正常脚本内部生效,外部要想生效只要exit当前会话再进就好了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式