我有一个可执行文件。我想像其他命令一样在终端中仅使用名称执行该可执行文件。
我可以将我的可执行文件放入/usr/local/bin
,也可以将其添加PATH
到~/.bashrc
。两种方法都可以。
哪个更好?有什么区别吗?
答案1
例如,假设你有一个可执行文件myscript
。你需要从终端运行它,如下所示:
/path/to/myscript
用户等级变更
如果PATH
将该可执行文件的 添加到~/.bashrc
,则可以从任何地方运行仅具有名称的可执行文件(阿维纳什·拉杰已经提到过),因为
myscript
但变化将影响用户级别。这意味着如果您有其他用户,他们无法仅使用名称访问可执行文件。如果他们拥有适当的权限,他们需要以以下身份运行可执行文件:
/path/to/myscript
此外,您将无法以如下方式运行该脚本须藤因为它不在PATH
根目录中,要运行sudo
你需要使用,
sudo /path/to/myscript
系统级变更
如果您将脚本放入其中,/usr/local/bin
则系统范围内的所有用户都可以访问它。在这种情况下,任何用户都可以以以下身份运行您的可执行文件(需具有适当的权限)
myscript
在这种情况下,您也可以运行可执行文件sudo
,
sudo myscript
现在根据您的需要选择一种方式。
答案2
将文件的位置添加到文件$PATH
中的变量中~/.bashrc
只允许您从任何位置执行,而将其放入/usr/bin/
将允许系统上的所有用户从任何位置执行该文件。
为什么会这样?因为,您的~/.bashrc
文件只有您作为用户才能看到。因此,所有变量更改都仅限于您。而将该文件添加到/usr/bin
将允许该文件保留在所有用户中,并且由于除非有人将其删除,否则它/usr/bin
存在于$PATH
变量中,因此将允许所有用户从任何位置执行它。
答案3
如果将可执行文件放入/usr/bin
或,则仅需指定名称(而不是)/usr/local/bin
即可运行该程序。your-program
/usr/local/bin/your-program
如果您将包含该程序的目录添加到~/.bashrc
文件中PATH
,则只需输入其名称即可启动该目录中的任何可执行文件。
答案4
只是作为@souravc 答案的补充......
对于“用户级别更改”,~/.bashrc
您可以简单地创建目录$HOME/bin/
并将脚本放在其中,而不必编辑文件。
该目录将自动添加到PATH
(至少自 Ubuntu 12.04 起),这意味着您将能够使用简单的命令运行该目录内的所有脚本/可执行文件:
myscript
只是我的意见。:)
PS-我试图将此作为对@souravc 回答的评论发布,但我的声誉不够。:-(