【问题标题】:Shebang not working when file executed directly from containing folder当文件直接从包含文件夹执行时,Shebang 不起作用
【发布时间】:2017-11-15 12:32:42
【问题描述】:

我正在尝试从 php 文件运行一个函数并从 cli 运行它而无需键入 php deploy 所以添加了一个 shebang 以便 cli 知道如何运行脚本。

例如

#!/usr/bin/env php
<?php

if (PHP_SAPI !== 'cli') {
  echo 'bin/deployer must be run as a CLI application' . "\n";
  exit(1);
}

function deploy(){
  echo "Deploying" . "\n";
}

foreach ($argv AS $arg){
  function_exists($arg) AND call_user_func($arg);
}

文件:部署器

这在根目录中运行良好,并且运行 bin/deployer deploy 可以按预期工作。我只是好奇为什么如果从目录 bin 运行:deployer deploy 我得到-bash: deployer: command not found

【问题讨论】:

    标签: php bash shebang


    【解决方案1】:

    bin/ 目录中试试这个:

    ./deployer deploy
    

    如果您省略文件前面的./,您的shell 将在您的路径($PATH) 中查找命令deployer,而不是将其视为要执行的文件的路径。

    $PATH 是一个目录列表,您的 shell 将在其中查找您键入的命令。 要查看路径中的内容,请尝试:

    echo $PATH
    

    【讨论】:

      猜你喜欢
      • 2019-03-02
      • 1970-01-01
      • 1970-01-01
      • 2013-12-25
      • 1970-01-01
      • 1970-01-01
      • 2018-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多