首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >". / the escript.sh“和”./the escript.sh“之间有什么区别?

". / the escript.sh“和”./the escript.sh“之间有什么区别?
EN

Stack Overflow用户
提问于 2010-04-14 08:58:13
回答 4查看 3.1K关注 0票数 9

今天我按照一些说明在Linux上安装了一个软件。有一个脚本需要先运行。它设置了一些环境变量。

指令告诉我执行. ./setup.sh,但我错误地执行了./setup.sh。因此,未设置env。最后,我注意到了这一点,并继续进行。

我想知道这两种调用脚本的方法之间的区别。我对Linux完全陌生,所以请尽可能地详细说明。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-04-14 09:05:16

./setup.sh运行该脚本时,将启动一个运行该脚本的新shell。新的shell不能影响启动脚本的父shell。

. ./setup.shsource ./setup.sh的缩写,它将在当前shell中运行脚本,而不是启动新的shell来运行它。这意味着脚本可以改变当前shell的行为,例如设置新的环境变量。

票数 21
EN

Stack Overflow用户

发布于 2010-04-14 09:03:02

编辑:我刚刚意识到我没有回答你问题的另一部分..但leeroy的答案是这样的。我回答了一些其他问题,但我希望它能有所帮助:-)

sh函数在您提供的脚本上运行bash。有关更多信息,请参阅the man page,但是您可以看到,sh基本上是bash的同义词

当您运行脚本时,它会根据文件顶部的内容(通常称为"Shebang" )来标识脚本

一个bash脚本应该是

代码语言:javascript
复制
#!/bin/sh

或类似的方法,允许您使用dot方法。您还可以使用其他内容,如Python脚本可以具有

代码语言:javascript
复制
#!/usr/bin/env/python

如果您的路径是正确的,它会将脚本作为Python脚本运行,而不是使用点符号运行bash脚本。

希望这能以简单的方式解释它!

票数 4
EN

Stack Overflow用户

发布于 2010-04-14 09:02:43

.是指当前目录。所以./script.sh意味着在当前目录中运行脚本。

../script.sh将在父目录中运行script.sh。

在像csh这样的shell中,. ./script.sh (点之间有空格)可能会抱怨,但在bash中,. foosource foo的缩写。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2634219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档