如何在bash中将python与py文件关联起来

时间:2016-06-06 00:48:10

标签: python linux bash

一个常见的问题是“如何在不在命令行上显式调用python的情况下使我的 python脚本可执行文件?”,答案是chmod +x然后添加{{1在脚本的开头。

那是不是我问的问题。

我想要做的是告诉bash,或python,或者负责文件处理的任何事情来处理所有设置了执行位的.py文件,好像它们一开始就有shebang,无论它们是否实际做。

据我所知,在Windows中可以这样做,显然在Gnome中用于从GUI双击.py脚本的用例。我可以发誓,我记得听说过从shell中指定处理程序的等效方法。

为什么我想知道如何做到这一点(如果它确实可行):

  • 并非每个系统都使用shebang,我不想在它的跨平台项目中混乱文件。
  • 如果我正在为我不拥有的项目提交补丁,那么为了方便起见,我将稍微补丁的内容放入其中是有点令人讨厌的。

感谢。

2 个答案:

答案 0 :(得分:4)

您的意思是binfmt_misc吗?

  

binfmt_misc是Linux内核的一项功能,它允许识别任意可执行文件格式并将其传递给某些用户空间应用程序,例如模拟器和虚拟机。

所以你想要注册一个条目,所以每次你想要执行.py文件时,内核都会把它传递给/ usr / bin / python。

你可以通过尝试这样的事情来做到这一点

# load the binfmt_misc module
if [ ! -d /proc/sys/fs/binfmt_misc ]; then
  /sbin/modprobe binfmt_misc
fi
if [ ! -f /proc/sys/fs/binfmt_misc/register ]; then
  mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc
fi

echo ':Python:E::py::/usr/bin/python:' > /proc/sys/fs/binfmt_misc/register  

如果您使用的是基于Debian的发行版,则必须安装binfmt-support

您可以将:Python:E::py::/usr/bin/python:添加到/etc/binfmt.d/python.conf,以便重新启动后显示它。

答案 1 :(得分:1)

Rio6的回答是正确的。只有几乎没有操作系统支持它。您将需要binfmt,您可以在This git address

从源代码自行编译