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 依旧有效 展开
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 依旧有效 展开
5个回答
展开全部
好像是source /etc/profile只在当前会话生效,而且shell和打开的当前会话不是同一个会话,重新source /etc/profile后就可以生效了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
cat /etc/profile
看看你echo进去了啥
source /etc/profile
看看你echo进去了啥
source /etc/profile
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我也遇到一样的问题,脚本里面执行了source /etc/profile,然后在脚本里面打印版本信息是有效的;然后回到控制台发现打印不出版本信息,重新在控制台source一下又可以了。
系统:乌班图 16.04 不明所以啊
系统:乌班图 16.04 不明所以啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我也遇到同样的问题,用sh命令执行source /etc/profile后,不生效,但在控制台执行此命令则生效,为什么?我不想不明白。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个source命令我们直接手动执行,会自动退出当前会话再进入当前会话.
如果用脚本执行后,在脚本内部生效,脚本走的是一个子bash,
解决办法正常脚本内部生效,外部要想生效只要exit当前会话再进就好了.
如果用脚本执行后,在脚本内部生效,脚本走的是一个子bash,
解决办法正常脚本内部生效,外部要想生效只要exit当前会话再进就好了.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询