关于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,如需转载请自行联系原作者
相关文章
|
22天前
|
弹性计算 Shell Perl
ecs服务器shell常用脚本练习(二)
【4月更文挑战第1天】shell代码训练(二)
105 1
|
25天前
|
Java Shell
SpringBoot启动脚本Shell
SpringBoot启动脚本Shell
17 0
|
1月前
|
存储 Shell Linux
【Shell 命令集合 网络通讯 】Linux 显示Unix-to-Unix Copy (UUCP) 系统的状态信息 uustat命令 使用指南
【Shell 命令集合 网络通讯 】Linux 显示Unix-to-Unix Copy (UUCP) 系统的状态信息 uustat命令 使用指南
26 0
|
2天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
25 3
|
6天前
|
运维 监控 Shell
利用Shell脚本编写局域网监控软件:实时监测主机连接情况
本文介绍了如何使用Shell脚本创建一个局域网监控工具,以实时检查主机连接状态。脚本包括扫描IP地址范围检测主机可达性及使用`netstat`监控ESTABLISHED连接。此外,还展示了如何每60秒将连接数数据自动提交到指定网站API,以便实时跟踪网络活动。这个自动化监控系统有助于提升网络安全性和故障排查效率。
25 0
|
6天前
|
Shell
Shell脚本之流程控制语句
Shell脚本之流程控制语句
|
7天前
|
JSON 运维 监控
训练shell常用脚本练习(三)
【4月更文挑战第14天】shell代码训练(三)
26 1
|
11天前
|
存储 弹性计算 Shell
ecs服务器shell常用脚本练习(十)
【4月更文挑战第11天】shell代码训练(十)
142 0
|
11天前
|
弹性计算 Shell Go
ecs服务器shell常用脚本练习(九)
【4月更文挑战第10天】shell代码训练(八)
136 0
|
15天前
|
弹性计算 Shell Linux
ecs服务器shell常用脚本练习(六)
【4月更文挑战第4天】shell代码训练(六)
108 0