繁体   English   中英

设置bash命令行变量以启动我的应用程序

[英]Setting bash command-line variable to start my application

我对Linux环境的编程很新,所以我不知道要搜索什么来为自己回答这个问题。 我需要了解应用程序如何将shell设置为接受某个命令来启动它们。 例如,您可以通过执行命令firefox从命令行启动Firefox。

我不知道这个定义在哪里。 Makefile文件? 配置脚本? 在源代码本身?

任何关于Linux编程花絮的资源/阅读都会非常感激!

谢谢。

Firefox由命令“firefox”启动,因为$ PATH环境变量中的一个文件夹中有一个名为“firefox”的可执行文件。

你在谈论PATH变量吗? 看起来你好像。

在linux中,您应该能够键入:“echo $ PATH”(不带引号)并获得“:” - 程序所在位置的分隔列表(如firefox)。

如果您需要在路径中添加一些内容,您应该能够:

export PATH=$PATH:/another/directory

在你的shell(很可能是bash)

你也可以输入:

which firefox

显示firefox可执行文件的位置。

通常,shell将具有一个名为$ PATH set的环境变量。 这只是有人键入命令时要查看的所有目录的有序列表。 一旦找到一个可执行文件(我的意思是一个你有执行权限的文件,而不是一个以.exe结尾的文件),它与输入的内容同名,它就会运行该文件。 $ PATH中的常用目录可能是/ bin,/ usr / local / bin,〜/ bin等。

因此,当你键入'firefox'时,shell会查看$ PATH中的所有目录,直到它找到/ usr / local / bin / firefox,然后运行它。 要使自己的程序以相同的方式运行,您需要将它们(或它们的符号链接)放在可能位于每个用户路径中的目录中(/ usr / local / bin /是一个不错的选择) ),或者您需要让您的用户将您的程序目录添加到$ PATH。

有关更完整的描述,请参阅有关$ PATH变量的Wikipedia文章

作为前面提到的$ PATH修改的替代方法,您还可以在$ PATH中已有的目录中复制或链接可执行文件。 更具体地说, /usr/local/bin/在大多数UNIX系统上都可用于此目的(在操作系统的默认包管理之外安装软件)。

它必须像其他人提到的一样在路径中,但您可能还需要使用以下内容使其可执行:

chmod +x /path/to/file

如果它是一个脚本,那么顶部通常会有一个shebang告诉os使用什么来执行它:

#! /usr/bin/python

通常,大型软件包安装在/opt ,并在PATH某处使用包装脚本或链接。 例如,在我的系统上, Google Picasa安装在/opt/google/picasa/usr/bin/picasa上有一个符号链接到/opt/google/picasa/3.0/picasa

Firefox在我的系统上是/usr/bin/firefox ,这是/usr/bin/firefox-3.0的符号链接,它本身是/usr/lib/firefox-3.0.11/firefox.sh的符号链接 - 那个shell文件摸索直到它最终运行/usr/lib/firefox-3.0.11/firefox (除非它找到了做其他事情的理由)。 最后,这是一个二进制可执行文件。 所以/usr/lib是我安装firefox地方。

您可以使用此命令查找程序的位置:

type -a firefox

然后,您可以找到它使用的文件类型:

file /usr/bin/firefox

有关文件和程序的建议位置的更多信息,另请参阅Filesystem Heirarchy标准

暂无
暂无

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

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