看来这并不是一种有效的手段。
试试#!/usr/bin/python
(请注意哈希标记后的感叹。)
编辑回应OP:的评论
因此,基于您关于单击文件管理器中的图标和平台为LXDE的评论,在该用例中,它最终从GAppInfo库调用到GAppInfo函数,这似乎是存储“应用程序信息和启动上下文”的整个层。
在此之前,它以按位方式结束-或在G_APP_INFO_CREATE_NEEDS_TERMINAL标志中的flags字段中,它将传递给代码中的fm_app_info_create_from_commandline。
因此,看起来双击文件在最终在终端中运行之前做了大量额外的工作,而且看起来这些额外的东西(附加的上下文,通过其他库和层抽象出来,等等)。是什么导致了这个问题。
如果这个特性真的应该真正地在终端上“正常”启动,那么我会认为它是fm文件启动器c代码中的一个bug,或者是GAppInfo代码本身中的一个bug。
我不确定开发人员是否一定会同意--这将取决于引擎盖下到底发生了什么,以及他们打算把这个特性到底是什么。如果您真的想要做到这一点(我不确定我是否真的能从直接在终端窗口中使用./file.py方法得到好处),我建议针对file Launcher.c代码提交一个bug。这是libfm项目的一部分,而且根据他们的SourceForge页面,他们似乎不通过github页面跟踪问题,而是跟踪他们的论坛页面。
简而言之,双击文件管理器中的图标并选择在终端中启动它与在终端中实际启动它是非常、非常不同的事情,即使前者本质上是与后者类似的。
另外,我尝试在Nautilus (我使用Ubuntu)中这样做,它对于这个用例的行为只是自动地假设它是一个文本文件,而不是一个可执行文件,并将它加载到我的默认文本编辑器中。