在我的路径中添加二进制文件
我有一个可执行文件。 我想在终端中执行可执行文件,其名称与其他命令一样。
我可以将我的可执行文件放在/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答案的评论发布,但我没有足够的声誉。 🙁