将二进制文件添加到我的路径


15

我有一个可执行文件。我只想像其他命令一样在终端中以名称执行可执行文件。

我可以将可执行文件放入/usr/local/bin或添加PATH到中~/.bashrc。两者都会起作用。

什么是更好的?有什么区别吗?

Answers:


12

例如,让我假设您有一个可执行文件myscript。您需要从终端运行它,

/path/to/myscript

用户级别变更

如果您PATH将该可执行文件添加到~/.bashrc,则只能在任何地方使用名称运行该可执行文件(已经提到过Avinash Raj),如下所示:

myscript

但是更改将影响用户级别。这意味着,如果您有任何其他用户,他们将无法仅使用名称访问可执行文件。如果他们有适当的权限,则需要以以下方式运行可执行文件:

/path/to/myscript

另外,您将无法以sudo的身份运行脚本,因为它不在PATHroot目录中。要按需运行sudo

sudo /path/to/myscript

系统级变更

如果将脚本放入其中,/usr/local/bin则可以在整个系统范围内供所有用户访问。在这种情况下,任何用户都可以按以下方式运行您的可执行文件(必须具有适当的权限)

myscript

在这种情况下,您也可以运行可执行文件sudo

sudo myscript

现在根据您的需要选择一种方法。


2

将文件的位置添加到文件中的$PATH变量~/.bashrc将仅允许您从任何位置执行,而将其放入/usr/bin/将允许系统上的所有用户从任何位置执行该文件。

这是为什么?因为,您的~/.bashrc文件仅对您作为用户可见。因此,所做的所有变量更改都仅限于您。而将文件添加到该位置/usr/bin将允许该文件保留给所有用户使用,并且由于/usr/bin存在于$PATH变量中(除非有人将其删除),这将允许所有用户从任何位置执行该文件。


1

如果将可执行文件放在/usr/bin或中/usr/local/bin,则只需指定名称(your-program而不是/usr/local/bin/your-program)就可以运行该程序。

如果您改为将包含程序的目录添加到~/.bashrc文件中的PATH,则仅键入其名称即可启动该目录中存在的任何可执行文件。


1
此信息为假,即使您不在“那个目录”中,也可以启动可执行文件。
Lekensteyn 2014年

这是怎么回事?请进一步解释。
Avinash Raj

1
好的,我很难阅读您的答案(从而犯了一个错误),因此我对其进行了编辑,以消除混乱,并消除了反对意见。希望它会有所帮助。
Lekensteyn 2014年

所以,问题是:哪个更好?有什么区别吗?您几乎只说了OP。
RaduRădeanu2014年

我回答了操作系统的问题,但不是简短格式。
Avinash Raj 2014年

0

只是对@souravc答案的补充...

对于“用户级别更改”,您无需编辑~/.bashrc文件,而只需创建目录$HOME/bin/并将脚本放置在该目录中即可。

该目录将被自动添加到PATH(至少从Ubuntu 12.04开始),这意味着您将能够使用以下简单命令运行该目录中的所有脚本/可执行文件:

myscript

只是我的2美分。:)

PS-我试图将其作为对@souravc答案的评论,但我没有足够的声誉。:-(

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.