Shell 脚本未执行

Gur*_*uru 4 shell ksh executable

不知道发生了什么。

让我们a.sh使用以下命令调用脚本

/users/guru$ cat a.sh
#! /usr/bin/ksh

echo "Hello"
date
Run Code Online (Sandbox Code Playgroud)

用 执行ksh。它完成了。

/users/guru$ ksh a.sh
Hello
Tue Jul 15 15:00:52 EDT 2014
Run Code Online (Sandbox Code Playgroud)

确保文件权限和ksh路径。

/users/guru$ ls -l a.sh
-rwxrwxrwx    1 guru  kpc         35 Jul 15 15:00 a.sh
/users/guru$ a.sh
ksh: a.sh:  not found
/users/guru$ which ksh
/usr/bin/ksh
Run Code Online (Sandbox Code Playgroud)

Tan*_*avo 8

尝试执行时尝试“./a.sh”。它需要知道文件在哪里。

'./' 告诉它在当前目录中查找。

  • 过去通常的做法是在`PATH` 中包含`.`,但后来意识到这是一个安全风险,因此将其删除。想象 。位于`PATH`的开头。然后一个名为 `ls` 的本地脚本可以拦截对 `ls` 的调用。如果`.` 只是在`PATH` 的末尾,那么你安装的包中有一个名称冲突的程序,这个程序将运行而不是你期望的程序。(你可能会注意到,在 ms-windows 上的 `cmd` 中,`.` 隐含在 `PATH` 中,这可以被认为是 `cmd` 中的一个错误,因为它无法更改。你可能还会注意到 ms-windows有更多的病毒问题。 (3认同)