当文件直接从包含文件夹执行时 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
我正在尝试 运行 来自 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