关于shell unix下,直接执行shell与sh 执行 或加 . 脚本 的区别及含义-阿里云开发者社区

开发者社区> 科技小先锋> 正文

关于shell unix下,直接执行shell与sh 执行 或加 . 脚本 的区别及含义

简介:
+关注继续查看
今天遭遇到一个问题
写了一小段脚本想增加一个环境变量
atest.sh
代码如下
#!/bin/bash
dir=${PWD}
echo "export PATH=/$PATH:${dir}" >> ~/.bash_profile
export PATH=$PATH:${dir}
 
但是用sh atest.sh 怎么执行环境变量都无法生效
通过
$echo PATH
还是无法看见新增的环境变量
但是写文件的操作还是成功了,什么原因了,查阅了很多文档。
终于大致明白,原来sh 执行脚本,实际上执行了两个脚本,一个母shell sh ,一个子shell atest;而子shell的变量是不会在母shell中生效的。
所以只能直接执行atest.sh
但是必须首先修改脚本读写权限,chmode atest.sh 777
这样执行./atest.sh就可以了
 
 
还有一种做法,不需要chmode atest.sh 777
 
而是直接. atest.sh
查阅相关资料
. 命令的作用:相当于在当前shell环境执行当前目录下的文件atest.sh。


本文转自elbertchen 51CTO博客,原文链接:http://blog.51cto.com/linkyou/751807,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Shell中反引号(`)与$()用法的区别
今天有人提问:   echo `echo \\\\\\\w` echo $(echo \\\\\\\w) 为什么输出的不一样?   这就引申出了另一个问题:反引号与$()有没有区别? 这是一个非常有意思的问题,但要解释这个问题确比较困难,我来换一个简单一点的例子,通俗的解释一下。
829 0
怎么设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程
8478 0
gdb的info functions和lldb的image lookup的区别
两个命令都是搜索函数的。 gdb的info functions是在内存中的symbol table查找,结果中的地址是内存里的地址,所以得到结果后,直接b(break,添加断点)这个地址,即可正确加断点。
814 0
Select count(*)和Count(1)的区别和执行方式
原文:Select count(*)和Count(1)的区别和执行方式     在SQL Server中Count(*)或者Count(1)或者Count([列])或许是最常用的聚合函数。很多人其实对这三者之间是区分不清的。
697 0
可显示Android设备选择列表,并进入指定Android设备Console的Shell脚本
      如果PC上连接多部Android设备(包括Android模拟器),在进入Console时还需要使用adb -s deviceid shell。
1041 0
6967
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载