Unix 根据shebang行运行脚本

Unix 根据shebang行运行脚本,unix,shebang,Unix,Shebang,我的计算机上有一个名为test.py的脚本。到目前为止,我一直在做的是在终端中键入python test.py Unix操作系统上是否有命令不要求用户指定用于运行脚本的程序,而是使用shebang行所指向的任何程序来运行脚本 例如,我正在寻找一个命令,该命令允许我在终端中键入some_command test.txt,如果test.txt的第一行是#/usr/bin/python,脚本将被解释为python脚本,但是如果第一行是#/path/to/javascript/explorer,脚本将被

我的计算机上有一个名为
test.py
的脚本。到目前为止,我一直在做的是在终端中键入
python test.py

Unix操作系统上是否有命令不要求用户指定用于运行脚本的程序,而是使用shebang行所指向的任何程序来运行脚本


例如,我正在寻找一个命令,该命令允许我在终端中键入
some_command test.txt
,如果
test.txt
的第一行是
#/usr/bin/python
,脚本将被解释为python脚本,但是如果第一行是
#/path/to/javascript/explorer
,脚本将被解释为javascript。

这是终端的默认行为(或通常只是执行一个文件),您所要做的就是使用

chmod u+x test.txt
然后(假设
text.txt
在当前目录中)每次键入

./text.txt

它将查看sh bang行,并使用该行中的程序运行
text.txt

如果您确实想复制内置功能,请尝试此操作

#!/bin/sh
x=$1
shift
p=$(sed -n 's/^#!//p;q' "$x" | grep .) && exec $p "$@"
exec "$x" "$@"
echo "$0: $x: No can do" >&2

可以叫它
start
来提醒您类似有用的Windows命令。

您能分享一下您为什么需要这样的东西吗?终端根本不涉及。即使是shell也只是通过一个
exec*
系统调用将文件传递给内核。@tripleee我知道,但由于OP不知道sh-bang行,我做出了判断调用,最好是根据他们将观察到的内容来描述它,而不是它的实际工作方式。如果OP展示了更多使用unix的经验,我会用
execve
来描述它,以获得最准确的答案。