尝试使脚本可调用时,我遇到了一个非常奇怪的错误。我在 /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)
分别
任何帮助都是极好的。 …