我正在尝试编写我的第一个 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
shebang 指向了解释器的错误位置,它应该是绝对路径,这最有可能(因为您想使用 bash 作为脚本):
#!/bin/bash
Shebang 的目的是明确说明脚本应使用哪个解释器运行。如果您未指定解释器,则它将在运行时使用您正在运行的任何解释器运行。
编辑:我刚刚才注意到您的标题中列出了另一个错误。这可能是因为您正在使用. testscript
,这很可能是应该的./testscript
(如果您尝试执行它)。请确保您已完成chmod +x
使脚本可执行的操作,否则它将失败。