首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.sh文件即使使用`#!/bin/bash` `行也需要‘.sh app.sh`’

.sh文件即使使用`#!/bin/bash` `行也需要‘.sh app.sh`’
EN

Ask Ubuntu用户
提问于 2011-08-13 13:10:37
回答 2查看 10.7K关注 0票数 7

我的印象是,如果我把这一行

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

在我的文件开始时,它将被识别为一个bash脚本,我可以通过它运行。

代码语言:javascript
复制
file.sh

而不是

代码语言:javascript
复制
sh file.sh

但在我的例子中,file.sh给出了类似于test.shtest.sh: command not found的东西。为什么会这样呢?

更新

我注意到我需要使用./。但我想它还是会在当前目录中查找吗?

代码语言:javascript
复制
./test.sh
EN

回答 2

Ask Ubuntu用户

回答已采纳

发布于 2011-08-13 13:50:05

首先,您需要确保文件是可执行的:

chmod +x file.sh

然后,要运行它,您需要将其放在您的路径中,即操作系统在查找要运行的文件时搜索的文件目录之一(您可以在echo $PATH中找到这些文件),或者您需要键入:

./file.sh

而不仅仅是键入file.sh

您可以键入file.sh,如果它在您的路径中,这是我推荐的。一个好地方是在~/bin。如果文件夹不存在,就创建它,在Ubuntu下,当您登录时,它将被添加到您的路径中。

票数 13
EN

Ask Ubuntu用户

发布于 2011-08-13 13:59:12

您需要使用./file.sh启动它,因为当前dir不在路径中。

如果这还不够的话,因为你错过了对chmod a+x的建议,那么您应该从#!/bin/bash开始

代码语言:javascript
复制
bash file.sh

代码语言:javascript
复制
sh file.sh

即使sh是指向/bin/bash的符号链接。

shell检查它是如何被调用的,并且可以作为sh被调用以在兼容模式下工作,因此它可能无法处理某些bashism,如果作为bash file.sh调用这些bashism就会工作。

这不是你的问题,但如果你不知道这些微妙的区别,你可能会成为一个问题。

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

https://askubuntu.com/questions/56945

复制
相关文章

相似问题

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