在这种情况下,为什么我可以将参数传递给/ usr / bin / env?

姆比格拉斯

我在另一个答案读到,我无法将参数传递给解释器/usr/bin/env

另一个潜在的问题是该#!/usr/bin/env技巧不允许您将参数传递给解释器(脚本名称除外,该名称是隐式传递的)。

然而,它看起来像我可以,因为awk是破的时候,我不给它的-f标志和它的固定,当我做给它的-f标志,而使用/usr/bin/env

首先,不带-f标志:

$ cat wrap_in_quotes
#!/usr/bin/env awk
# wrap each line in quotes
# usage: wrap_in_quotes [ file ... ]
{ print "\""$0"\"" }
$ echo foobar | ./wrap_in_quotes
awk: syntax error at source line 1
 context is
     >>> . <<< /wrap_in_quotes
awk: bailing out at source line 1

二,带有-f标志:

$ vim wrap_in_quotes
$ cat wrap_in_quotes
#!/usr/bin/env awk -f
# wrap each line in quotes
# usage: wrap_in_quotes [ file ... ]
{ print "\""$0"\"" }
$ echo foobar | ./wrap_in_quotes
"foobar"
  • 因此,如果根据链接的答案我不能将标志传递给解释器,为什么我可以将-f标志传递awk

我正在跑步macOS

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.12.1
BuildVersion:   16B2657
库萨兰达

某些Unices,尤其是macOS(直到2005年,FreeBSD)才允许这样做,而Linux则不允许。

相反的问题:在Linux上,Shebang行带有## / usr / bin / env命令--argument`失败

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

是否可以保证/ usr / bin / env存在?

为什么#!/ usr / bin / env bash优于#!/ bin / bash?

为什么#!/ usr / bin / env将“ $ @”显示为1?

为什么“#!/ usr / bin / env python”比“#!/ usr / bin / python”更正确?

symlink / usr / bin / env损坏?

“#!/ usr / bin / env bash”和“#!/ usr / bin / bash”之间有什么区别?

无法使用“#!/ usr / bin / env python”将参数传递给python

从/ usr / bin / env或/ bin启动bash

什么是#!/ usr / bin / env xdg-open在桌面文件中?

为什么Capistrano从/ usr / bin / env而不是/usr/local/rvm/gems/ruby-2.1.0/bin/rake执行'rake'?

POSIX shell脚本shebang#!/ bin / sh与#!/ usr / bin / env sh,有什么区别?

在Windows上使`#!/ usr / bin / env python`工作

/usr/bin/env: “node”: 权限被拒绝

$BASH_VERSION vs /usr/bin/env

#!_ perl与#!/ usr / bin / env perl相同吗?

$BASH_VERSION 与 /usr/bin/env

为什么#!/ usr / bin / env bash在我的系统上不起作用?

为什么最好使用“#!/ usr / bin / env名称”代替“#!/ path / to / NAME”作为我的shebang?

如何将/ usr / bin / env perl功能与perl参数一起使用?

为什么“ / usr / bin / env bash -x”仅在命令行中有效?

什么是/ usr / bin / parity?

什么是/ usr / local / bin?

@!/usr/bin/env: 当我尝试使用 ros 节点时没有这样的文件或目录

python shebang与/ usr / bin / env而不是hard-path有什么区别?

节点文件开始处的“ / usr / bin / env节点”到底做什么?

在shebang中使用“#!/ usr / bin / env python”而不是仅仅调用“#!python”解释器有什么好处?

/ usr / bin / env -0(对于非Linux系统)

/ usr / bin / env和Capistrano 3在Rails部署中失败

在Windows上使用#!/ usr / bin / env python3 shebang