在这个超级用户问题中,我被告知最好通过显式执行解释器并将脚本作为参数提供来执行以解释语言(php、python 等)编写的脚本,例如:
> php script.php
而不是在脚本中添加一行来告诉操作系统执行它,例如:
#!/usr/bin/php
<?php
echo "hello world";
?>
为什么这是真的?我的直觉告诉我,如果脚本被移动到解释器的可执行文件位于不同路径的系统中,它会更安全,但这是唯一的原因吗?
在这个超级用户问题中,我被告知最好通过显式执行解释器并将脚本作为参数提供来执行以解释语言(php、python 等)编写的脚本,例如:
> php script.php
而不是在脚本中添加一行来告诉操作系统执行它,例如:
#!/usr/bin/php
<?php
echo "hello world";
?>
为什么这是真的?我的直觉告诉我,如果脚本被移动到解释器的可执行文件位于不同路径的系统中,它会更安全,但这是唯一的原因吗?
如果你使用这个成语,可移植性会得到增强:
#!/usr/bin/env php
但它有其自身的缺点;在http://sites.google.com/site/frankpzh/knowledge-library/shebang上查看更长的讨论
不同的路径将是主要原因,尤其是当二进制文件开始存储在 x64 表示的路径中或安装在 /usr/local/bin/php 中时。