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

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.


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部