运行没有点斜杠的脚本(Ubuntu vs Mac)

时间:2014-12-15 07:32:36

标签: shell unix

在ubuntu脚本中可以使用以下命令执行:

$ chmod +x manage.py
$ manage.py

但是在Mac中你需要使用 ./ 来实际运行脚本,如下所示:

$ chmod +x manage.py
$ ./manage.py

我想知道究竟是什么 ./ (特别是两个系统默认使用bash)以及是否有办法直接在mac中运行脚本?

2 个答案:

答案 0 :(得分:3)

这是因为你(非常明智地)在你的.环境变量中没有PATH。如果你这样做,它就会成为一种攻击向量,让人们可以让你执行自己的代码而不是真正的代码。

例如,让我们说你的路径是:

.:/usr/bin

以便首先在当前目录中搜索命令,然后在/usr/bin

中搜索

然后另一个用户在其主目录中创建一个可执行脚本文件ls,该文件将更改为您的主目录并删除所有文件。然后他们告诉你他们在他们的主目录中有一些有趣的东西。您运行ls以查看它们的内容,并删除您的文件。全部是因为它首先从您的当前目录运行ls

对于天真的系统管理员来说,这是一个特别喜欢的攻击媒介。


老实说,在我的家用机器上,我不用太担心,因为我是唯一的用户而且我不容易下载我不信任的东西。因此,为方便起见,我通常会将.添加到我的路径中,但通常位于 end ,因此它不会妨碍我更常规的命令。

答案 1 :(得分:0)

执行命令时,系统需要找到文件(脚本/二进制文件)。这是通过将目录放在PATH环境变量中来完成的。因此,如果它在ubuntu中有效,则意味着PATH包含'。' (当前目录)。如果你想在mac上有相同的行为,那么输入像export PATH =“$ PATH:”这样的东西。在你的.bashrc中(假设你正在使用bash ..)