./,sh,source和sh区别

本文通过实践演示了在Linux环境中使用source、.、sh及./等不同方式执行Shell脚本时,脚本内变量对外部环境的影响差异。总结发现,source和.命令执行脚本不会改变当前进程ID,并能使脚本内的变量在外部环境中生效;而通过sh或./执行脚本会创建新的子进程,脚本内的变量不会被导出到父进程中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[root@SR18-151 lol]# vim hu.sh 
#!/bin/bash
echo $$
evar=12345
保存
[root@SR18-151 lol]# ll
总用量 4
-rw-r--r-- 1 root root 31 8月  31 06:13 hu.sh
能否运行
source hu.sh
. hu.sh
./hu.sh ×
sh hu.sh

添加权限
[root@SR18-151 lol]# chmod +x hu.sh 
[root@SR18-151 lol]# ll
总用量 4
-rwxr-xr-x 1 root root 31 8月  31 06:13 hu.sh
进行测试
[root@SR18-151 lol]# echo $$
1227 当前bash进程号
[root@SR18-151 lol]# unset evar;source hu.sh;echo $evar           
1227 当前进程没变
12345 脚本中变量能打印出来
[root@SR18-151 lol]# unset evar;. hu.sh;echo $evar      
1227 当前进程没变
12345 脚本中变量能打印出来
[root@SR18-151 lol]# unset evar;sh hu.sh;echo $evar 
1313 当前进程号改变
脚本中变量打印不出来
[root@SR18-151 lol]# unset evar;./hu.sh;echo $evar   
1314 当前进程号改变
脚本中变量打印不出来
[root@SR18-151 lol]# 


总结 source和.不改变当前进程号,./和sh改变当前进程号
 source和.执行完脚本,脚本中变量能打印出来,./和sh执行完脚本,脚本变量打印不出来
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值