在我的路径中添加二进制文件

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

我可以将我的可执行文件放在/usr/local/bin或者我可以将其PATH添加到~/.bashrc 。 两者都有效。

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

例如,让我假设,你有一个可执行的myscript 。 您需要从终端运行它,因为,

 /path/to/myscript 

用户级别更改

如果将该可执行文件的PATH添加到~/.bashrc ,则只能从任何地方运行可执行文件( Avinash Raj已经提到过),如

 myscript 

但是这种变化会受到用户级别的影响。 这意味着如果您有任何其他用户,他们无法仅使用名称访问可执行文件。 如果他们有适当的权限,他们需要运行可执行文件,

 /path/to/myscript 

此外,您将无法以sudo身份运行脚本,因为它不在root的PATH中,要以sudo身份运行,您需要使用,

 sudo /path/to/myscript 

系统级别的变化

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

 myscript 

在这种情况下,你可以像sudo一样运行可执行文件,

 sudo myscript 

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

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

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

如果您将可执行文件放在/usr/bin/usr/local/bin ,那么您只能通过指定名称( your-program而不是/usr/local/bin/your-program )来运行该程序。 。

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

正如@souravc答案的补充……

对于“用户级别更改”,您只需创建目录$HOME/bin/而不是编辑~/.bashrc文件,然后将脚本放在那里。

该目录将自动添加到PATH (至少从Ubuntu 12.04开始),这意味着您将能够通过简单的方式运行该目录中的所有脚本/可执行文件:

 myscript 

只需2美分。 🙂

PS-我试图将此作为对@souravc答案的评论发布,但我没有足够的声誉。 🙁