当文件直接从包含文件夹执行时,Shebang 不起作用



我正在尝试从 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按预期工作。我只是好奇为什么如果从目录箱运行:deployer deploy我得到-bash: deployer: command not found

bin/目录中尝试一下:

./deployer deploy

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

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

echo $PATH

最新更新