编写我的第一个 bash 脚本(第 2 行:testscript:没有此文件或目录)

编写我的第一个 bash 脚本(第 2 行:testscript:没有此文件或目录)

我正在尝试编写我的第一个 shell 脚本(我正在运行 Ubuntu 10.x)

这就是我的“脚本”的样子

cd /some/path/to/scripts
# pwd (if uncommented, this shows we HAVE really changed directory to /some/path/to/scripts
# echo `ls`  (if uncommented, shows that testscript is in our working directory)
# the next line is where bash LIES:  'testscript: No such file or directory' 
. testscript # (./testscript doesn't work either)

我在上面的脚本中放置了以下调试语句(在 cd 之后)以确保一切正常:

pwd
echo `ls -lhrt`

并显示了目录中的所有文件。所以我不明白我收到的错误消息。

[编辑]

我已经改变了我的问题 – 重点关注为什么我会收到“没有这样的文件或目录”错误消息的主要问题。

事实如下:

  • testscript 是可执行文件,位于 /some/path/to/scripts
  • 当我手动输入上述脚本中的命令时,testscript 成功运行

我的问题是这样的:

为什么这些相同(简单的)命令在命令行中可以运行,但从批处理脚本执行时却无法运行?

同样(如果不是更重要的话)的问题是 - 我该如何解决这个问题?

简而言之,我想编写一个执行以下操作的脚本:

  1. 将目录更改为指定目录(硬编码)
  2. 在当前工作目录中运行脚本

答案1

shebang 指向了解释器的错误位置,它应该是绝对路径,这最有可能(因为您想使用 bash 作为脚本):

#!/bin/bash

Shebang 的目的是明确说明脚本应使用哪个解释器运行。如果您未指定解释器,则它将在运行时使用您正在运行的任何解释器运行。

编辑:我刚刚才注意到您的标题中列出了另一个错误。这可能是因为您正在使用. testscript,这很可能是应该的./testscript(如果您尝试执行它)。请确保您已完成chmod +x使脚本可执行的操作,否则它将失败。

相关内容