小编Tri*_*ews的帖子

Bash 脚本可从主目录调用,但不能从脚本目录调用

尝试使脚本可调用时,我遇到了一个非常奇怪的错误。我在 /srv/projectname/scripts 中有一个脚本目录,我在其中存储您知道的脚本,这些脚本将被称为不同项目的 cron 作业。我正在尝试添加一个新的并看到非常奇怪的行为。在调试中,我使用这组命令重现它

从 /srv/projectname/scripts 创建文件 创建文件

vi helloworld.sh
Run Code Online (Sandbox Code Playgroud)

准确插入文本:

#!/usr/bin/env bash

echo "Hello World!"
Run Code Online (Sandbox Code Playgroud)

使脚本可执行并尝试调用它:

chmod +x helloworld.sh
./helloworld.sh
Run Code Online (Sandbox Code Playgroud)

这使:

-bash: ./helloworld.sh: Permission denied
Run Code Online (Sandbox Code Playgroud)

确保没有代码错误:

bash helloworld.sh
Run Code Online (Sandbox Code Playgroud)

这使:

Hello World!
Run Code Online (Sandbox Code Playgroud)

将脚本复制到 home 并调用它:

cp helloworld.sh ~/helloword.sh
~/helloword.sh
Run Code Online (Sandbox Code Playgroud)

这使:

Hello World!
Run Code Online (Sandbox Code Playgroud)

我不知道发生了什么。我已经尝试了很多变体,我给出了完整路径,同样的错误,或者如果我 sudo 没有给出错误,但也不打印“Hello World!”。

其他详细信息: 运行于:Ubuntu 12.04.4 LTS 我还注意到我无法完成给我这个错误的脚本的全名,但是一旦我移动了它,我就可以。目录 /srv/projectname 是一个 git repo,但是这个脚本还没有添加到它,因为我通常只在它工作后才这样做。

脚本和脚本目录的 ls -l 行是

-rwxrwxr-x 1 ubuntu ubuntu     41 Apr 21 20:25 helloworld.sh
drwxrwxr-x 3 ubuntu ubuntu 4096 Apr 21 20:25 scripts
Run Code Online (Sandbox Code Playgroud)

分别

任何帮助都是极好的。 …

bash scripts executable

4
推荐指数
1
解决办法
925
查看次数

标签 统计

bash ×1

executable ×1

scripts ×1