关于执行Shell脚本

星展银行

假设我有一个shell脚本文件foo.sh

我可以chmod + x foo.sh将其更改为可执行文件。

在《 Kernighan-Pike:Unix编程环境(UP)》中,他们显示了在键入之后foo应该执行脚本。相反,在我的Ubuntu系统中,我需要输入sh foo./foo我猜这是由于外壳的某些功能(在编写UP时)所没有的。如果有人能启发我,我将不胜感激,为什么存在这种差异,为什么如此重要?

约翰1024
  1. 可执行文件的名称很重要。如果您的文件名为foo.sh,那么foo除非有其他名为的可执行文件,否则执行将无法进行foo与Windows不同,Unix不执行隐式文件扩展名。

  2. 如果以下方法有效:

    ./foo.sh
    

    但这不是:

    foo.sh
    

    这意味着该文件位于您的当前目录中,而您的当前目录不在您的PATH中。为了保护您,如果您未明确提供命令的路径,则Shell只会在PATH中的文件中寻找该命令。

  3. 空间很重要。以下可能会起作用:

    ./foo.sh
    

    但是,这(取自该问题的第一个版本)肯定行不通:

    ./ foo.sh
    

    ./之间使用空格foo.sh,外壳程序会认为您要使用foo.sh作为参数执行当前目录这将生成一条错误消息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章