当文件直接从包含文件夹执行时 Shebang 不工作

Shebang not working when file executed directly from containing folder

我正在尝试 运行 来自 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);
}

File: deployer

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

bin/ 目录中试试这个:

./deployer deploy

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

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

echo $PATH