Linux 执行脚本的四种方式

文章详细阐述了在Linux环境下,使用bash和./命令在子进程和父进程执行脚本的区别,以及使用.和source命令在同一Shell中运行脚本的差异。bashsc.sh和./sc.sh会在新子进程中运行,不继承父进程变量,而.sc.sh或sourcesc.sh则在当前Shell中执行,影响当前环境。

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

目录

前提条件: 

子进程里运行

1、bash sc.sh   (在子进程里运行)

2、./sc.sh  (在子进程里运行)

bash sc.sh 和 ./sc.sh的区别是:

父进程里运行

3、. sc.sh  (在父进程里运行)

4、source  sc.sh  (在父进程里运行)

. sc.sh 和source  sc.sh的区别是:


前提条件: 

[root@web lianxi]# cat sc.sh 
echo $sg $mv
[root@web lianxi]# 
[root@web lianxi]# sg=claylpf
[root@web lianxi]# mv=liunana

子进程里运行

1、bash sc.sh   (在子进程里运行)

[root@web lianxi]# bash sc.sh 

[root@web lianxi]# 

上图所示,bash sc.sh运行后没有输出,说明它在子进程里运行,而且无法继承父进程里的变量

2、./sc.sh  (在子进程里运行)

同理:

[root@web lianxi]# ./sc.sh
-bash: ./sc.sh: 权限不够
[root@web lianxi]# chmod +x sc.sh 
[root@web lianxi]# ./sc.sh

[root@web lianxi]# 

./sc.sh运行后没有输出,说明它在子进程里运行,而且无法继承父进程里的变量,而且他需要对文件进行权限修改,增加可执行的权限。

bash sc.sh 和 ./sc.sh的区别是:

bash sc.sh 和 ./sc.sh 都是执行名为 sc.sh 的脚本文件的命令。

但是它们之间有一个重要的区别:

  • bash sc.sh 命令会在当前Shell中启动一个新的bash子进程,并在该子进程中执行脚本文件。这意味着,该脚本文件中定义的变量和环境变量只在子进程中有效,执行完毕后不会影响到父进程的环境变量和状态。

  • ./sc.sh 命令是直接在当前Shell中执行脚本文件。这意味着,该脚本文件中定义的变量和环境变量将会影响到当前Shell的环境变量和状态。

因此,如果脚本文件中定义了需要在当前Shell中生效的环境变量或者需要对当前Shell中的环境变量进行修改,应该使用 ./sc.sh 命令。如果脚本文件只是作为一个独立的程序运行,并且不需要修改当前Shell的环境变量,可以使用 bash sc.sh 命令。

父进程里运行

3、. sc.sh  (在父进程里运行)

[root@web lianxi]# . sc.sh
claylpf liunana
[root@web lianxi]# 

4、source  sc.sh  (在父进程里运行)

[root@web lianxi]# source sc.sh
claylpf liunana
[root@web lianxi]# 

当我在脚本里定义一个变量,执行脚本后,此变量会变成整个环境的变量

[root@web lianxi]# cat sc.sh 
echo $sg $mv
gg="wo shi da shuai ge!"
[root@web lianxi]# echo $gg

[root@web lianxi]# source sc.sh 
claylpf liunana
[root@web lianxi]# echo $gg
wo shi da shuai ge!
[root@web lianxi]# 

. sc.sh 和source  sc.sh的区别是:

. sc.sh 和 source sc.sh 命令是在当前Shell中执行名为 sc.sh 的脚本文件的命令。它们的作用是相同的,都可以用来加载脚本文件中定义的变量、函数和命令,以及执行脚本文件中的命令。

它们之间的区别在于:

  • . sc.sh 是点符号加空格的简写形式,也可以写成 source sc.sh。在Bash中,点符号和source命令是等价的,它们都会在当前Shell环境中执行脚本文件中的命令。

  • 在其他Shell中,可能没有点符号这个命令,只能使用 source sc.sh 命令来加载脚本文件中的命令。

总之,. sc.sh 和 source sc.sh 命令的作用是相同的,它们都可以用来加载脚本文件中的命令,但在不同的Shell中可能有不同的语法要求,需要根据具体的情况来选择使用哪种命令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值