shell运行sh脚本的4种方式和区别

test.sh   方式一要求test.sh必须有可执行权限,方式二、三、四 有没有可执行权限都可以

方式一:./test.sh    ./(点斜杠)的意思是执行当前目录下的某个可执行文件, 此方式文件必须是可执行文件, 如果没有 chmod u+x filename 可赋予文件执行权限。        启动另一个Shell去执行脚本(另一个进程),所以./点斜杠执行脚本时,设置的环境变量会随着进程的退出而结束,其中的环境变量设置对当前Shell不起作用。

方式二:bash test.sh 或 bash ./test.sh    bash 某个脚本, 启动另一个Shell去执行脚本(另一个进程)执行脚本里的命令。设置的环境变量会随着进程的退出而结束,其中的环境变量设置对当前Shell不起作用。 文件是不是可执行文件都可以。

方式三:. test.sh   或 . ./test.sh        . (点空格)某个脚本文件,相当于利用source文件执行这个脚本,  在当前bash环境下读取并执行test.sh中的命令,设置的环境变量会对当前Shell其作用 。文件是不是可执行文件都可以。

方式四:source test.sh  或  source ./test.sh     source 在当前bash环境下读取并执行test.sh中的命令,设置的环境变量会对当前Shell其作用 。文件是不是可执行文件都可以。               

方式三、四:. (点空格)source  等价。

 

是否启动新shell运行结果不同的示例

export Hello="Hello World"
​(1)启动 新shell方式:没有​对当前Shell起作用。

​  $ ./test.sh

​ ​ ​$ echo $Hello

​ ​ 执行结果:(空)

​(2) 当前shell方式: 对当前Shell​设置此环境变量

​ ​ ​$ . ./test.sh或. test.sh或source test.sh

​ ​ ​$ echo $Hello

​ ​ ​执行结果:Hello World

​ ​ 

posted @ 2023-05-23 17:18  wieneralan  阅读(1384)  评论(0编辑  收藏  举报