当文件直接从包含文件夹执行时,Shebang无法正常工作

时间:2017-11-15 12:32:43

标签: php bash shebang

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

e.g。

#!/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);
}
  

文件:deployer

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

1 个答案:

答案 0 :(得分:1)

bin/目录中尝试此操作:

./deployer deploy

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

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

echo $PATH