繁体   English   中英

如何将python与bash中的py文件相关联

[英]How do I associate python with py files in bash

一个常见的问题是“如何使我的 python脚本可执行而无需在命令行上显式调用python?”,答案是chmod +x它,然后在脚本开头添加#!/usr/bin/env python

不是我要问的问题。

我想做的是告诉bash或python或负责文件处理的任何事物,以将所有设置了执行位的.py文件当作开始时是否具有shebang来对待。

我知道在Windows中可以做到这一点,显然是在Gnome中针对用例,您需要从GUI双击.py脚本。 我可能发誓我记得曾经听说过从shell指定处理程序的等效方法。

为什么我想知道如何执行此操作(如果确实可行):

  • 并非每个系统都使用shebang,我也不想使用它来使跨平台项目中的文件混乱。
  • 如果我要向不属于我的项目提交补丁,那么我为了自己的方便就将与补丁无关的内容放入其中是有点令人讨厌的。

谢谢。

你是说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

您可以在/etc/binfmt.d/python.conf添加:Python:E::py::/usr/bin/python: ,以便在重启后永久存在。

Rio6的答案是正确的。 几乎没有操作系统仅支持它。 您将需要binfmt,可以在此git地址从源代码自己编译它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM