您的位置:首页 > 运维架构 > Linux

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

2014-09-26 21:33 260 查看
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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: