相关疑难解决方法(0)

/ usr/bin/env关于shebang line pecularities的问题

问题:

  • 如果你将shell脚本粘贴到shebang行中,内核会做什么?
  • 内核如何知道要启动哪个解释器?

说明:

我最近想在/ usr/bin/env周围编写一个包装器,因为我的CGI环境不允许我设置PATH变量,除了全局(当然这很糟糕!).

所以我想,"好的.让我们设置PREPENDPATH并在环绕包装器中设置PATH." 生成的脚本(此处称为env.1)如下所示:

#!/bin/bash
/usr/bin/env PATH=$PREPENDPATH:$PATH $*
Run Code Online (Sandbox Code Playgroud)

看起来它应该工作.在设置PREPENDPATH后,我检查了它们是如何反应的:

$ which /usr/bin/env python
/usr/bin/env
/usr/bin/python

$ which /usr/bin/env.1 python
/usr/bin/env
/home/pi/prepend/bin/python
Run Code Online (Sandbox Code Playgroud)

看起来绝对完美!到现在为止还挺好.但看看"Hello World!"会发生什么.

# Shebang is #!/usr/bin/env python
$ test-env.py
Hello World!

# Shebang is #!/usr/bin/env.1 python
$ test-env.1.py
Warning: unknown mime-type for "Hello World!" -- using "application/*"
Error: no such file "Hello World!"
Run Code Online (Sandbox Code Playgroud)

我想我错过了一些关于UNIX的基本内容.

我很失落,甚至看着原来的源代码后,ENV.它设置环境并启动程序(或者在我看来......).

unix linux apache environment shebang

6
推荐指数
1
解决办法
5952
查看次数

标签 统计

apache ×1

environment ×1

linux ×1

shebang ×1

unix ×1