linux脚本中斜杠方向,在Linux中点斜杠(./)和点空格点斜杠(. ./)执行脚本之间的区别...

本文对比了两种不同的Shell脚本执行方法:通过点斜杠执行和通过source命令执行。前者会在新的子Shell环境中运行,因此其中设置的环境变量不会影响到父Shell;后者则在当前Shell环境中执行,设置的环境变量会保留下来。

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

1.点斜杠执行脚本是启动了另一个Shell去执行脚本(另一个进程),所以点斜杠执行脚本时,设置的环境变量会随着进程的退出而结束,其中的环境变量设置对当前Shell不起作用。

2.点空格点斜杠执行脚本,是相当于source ./执行脚本,source是执行脚本当中的命令,也就是说在当前进程中执行命令,所以其中的环境变量的设置会对当前Shell其作用。

例如: 如下test.sh脚本

​#!/bin/bash

export Hello="Hello World"

​(1)  执行命令:

​    ​    ​$ ./test.sh

​    ​    ​$ echo $Hello

​    ​ 执行结果:  (空)

​    ​  所以设置此环境变量,没有对当前Shell起作用。

​(2)  执行命令:

​    ​    ​$ . ./test.sh

​    ​    ​$ echo $Hello

​    ​    ​执行结果: Hello World

​    ​    对当前Shell​设置此环境变量。

以下是man bash中的一段话:

source filename [arguments]

Read and execute commands from filename in the current shell environment

and return the exit status of the last command executed from filename.

If filename does not contain a slash, file names in PATH are used to find

the directory containing filename. The file searched for in PATH need not

be executable. When bash is not in posix mode, the current directory is

searched if no file is found in PATH. If the sourcepath option to the shopt

builtin command is turned off, the PATH is not searched. If any arguments

are supplied, they become the positional parameters when filename is

executed. Otherwise the positional parameters are unchanged. The return

status is the status of the last command exited within the script (0 if

no commands are executed), and false if filename is not found or cannot

be read.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值