根据shebang线运行脚本

时间:2014-12-14 16:44:57

标签: unix shebang

我的计算机上有一个名为test.py的脚本。我到目前为止所做的运行程序的是python test.py到终端。

在Unix操作系统上是否有一个命令,它不要求用户指定他/她用来运行脚本的程序,而是使用shebang行所指向的程序来运行脚本? / p>

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

2 个答案:

答案 0 :(得分:1)

这是终端的默认行为(或者只是执行一般文件)所有你需要做的就是使脚本可执行

chmod u+x test.txt

然后(假设text.txt在您当前目录中)每次键入

./text.txt

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

答案 1 :(得分:0)

如果你真的想复制内置功能,试试这个。

#!/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命令。