Python .py中的一个单词命令(不带别名)
有些程序可以在任何地方用一个单字命令执行。youtube dl就是一个例子,它是一个python程序,可以使用简单的命令Python .py中的一个单词命令(不带别名),python,macos,binary,command,executable,Python,Macos,Binary,Command,Executable,有些程序可以在任何地方用一个单字命令执行。youtube dl就是一个例子,它是一个python程序,可以使用简单的命令youtube dl[input]执行。据我所知,这仅仅是因为存在一个名为/usr/bin/youtube dl的文件,/usr/bin位于路径中。然而,我不明白我自己要做什么才能做出这样的事情。现在,我有一个名为testproject的python项目,其中包括一个类似这样的python程序: ~/testproject/files/myownprogram.py 要使其成为
youtube dl[input]
执行。据我所知,这仅仅是因为存在一个名为/usr/bin/youtube dl
的文件,/usr/bin
位于路径中。然而,我不明白我自己要做什么才能做出这样的事情。现在,我有一个名为testproject
的python项目,其中包括一个类似这样的python程序:
~/testproject/files/myownprogram.py
要使其成为二进制可执行文件(如youtube dl),我必须做些什么
我知道我可以制作一个alias mop=“python~/testproject/files/myownprogram.py”
,这也是我所做的,它工作得很好。也就是说,我可以编写$mop
,并成功运行我的程序。
但出于好奇和学习的缘故,我想知道如何制作一个文件,比如/usr/bin/youtube dl
文件,从而消除对别名的需要
我发现在搜索引擎中很难找到关于。。。
非常感谢您的帮助!:-)
编辑:
我的问题与标记为重复的问题不同,因为我不希望将其作为.sh脚本执行。我只想将其作为一个后缀减去一个单词的命令来执行,类似于/usr/bin
:-)中的所有其他可执行文件
例如:
$myown
应该运行我的程序,不需要别名,也不需要在提示符处写“.sh”或“.py”。也就是说,我希望有一个文件/usr/bin/myown
,它可以通过简单的命令myown
从任何地方运行我的testproject
。应用程序是“从任何地方”执行的,因为系统具有查找这些文件的特定层次结构(当前目录,然后是系统路径)。因此,它知道在/usr/bin
中查找,因为这在您的系统路径中
至于确保在执行时使用python,您应该在文件的顶部添加以下内容(查看一些python应用程序源代码,您将看到这一点):
这告诉系统使用系统“python”命令执行脚本 应用程序是“从任何地方”执行的,因为系统具有查找这些文件的特定位置层次结构(当前目录,然后是系统路径)。因此,它知道在
/usr/bin
中查找,因为这在您的系统路径中
至于确保在执行时使用python,您应该在文件的顶部添加以下内容(查看一些python应用程序源代码,您将看到这一点):
这告诉系统使用系统“python”命令执行脚本 正如你所说的可能的副本。。。您需要将脚本放在
$PATH
中的文件夹中。因此,我必须为每个项目向$PATH添加一个新文件夹?这会不会让我的$PATH在几个项目之后变得很长…不切实际?我在/usr/bin
文件夹中有很多可以执行的二进制文件。我是否可以将我的项目放在那里,从而避免将新文件夹添加到$PATH?正如您所说的,可能是重复的。。。您需要将脚本放在$PATH
中的文件夹中。因此,我必须为每个项目向$PATH添加一个新文件夹?这会不会让我的$PATH在几个项目之后变得很长…不切实际?我在/usr/bin
文件夹中有很多可以执行的二进制文件。我可以把我的项目放在那里,从而避免在$PATH中添加新文件夹吗?谢谢你的回复,谢谢你确认我对PATH的想法。我的文件已经是可执行文件,如前所述,当我运行我创建的完整路径或别名时,工作正常。但是,(据我所知)如果不使用别名,我无法运行短命令。非常具体地说,我想知道youtube dl是如何在/usr/bin
中创建无后缀文件的。我该怎么做呢?Unix不关心文件名或扩展名;它关心文件是否标记为可执行文件,对于脚本,是否存在正确的shebang(#!)行。如果这两个文件都存在,您可以调用该文件,然后它将运行。这就是youtube dl运行的原因,尽管它是Python脚本。感谢您的回复,感谢您确认我对路径的想法。我的文件已经是可执行文件,如前所述,当我运行我创建的完整路径或别名时,工作正常。但是,(据我所知)如果不使用别名,我无法运行短命令。非常具体地说,我想知道youtube dl是如何在/usr/bin
中创建无后缀文件的。我该怎么做呢?Unix不关心文件名或扩展名;它关心文件是否标记为可执行文件,对于脚本,是否存在正确的shebang(#!)行。如果这两个文件都存在,您可以调用该文件,然后它将运行。这就是youtube dl运行的原因,即使它是Python脚本。
#!/usr/bin/env python