我已经编译链接并用 C++ 创建了一个程序,现在我有
foobar.out
我希望能够将其放入 bin 目录中并像系统范围命令一样使用它,例如
ssh, echo, bash, cd...
我怎样才能做到这一点?
答案1
有两种方法可以让您在不指定路径的情况下运行二进制文件(不包括创建别名或 shell 函数以使用绝对路径执行它):
- 将其复制到您的
$PATH
. - 将其所在目录添加到您的
$PATH
.
要将文件复制到路径中的目录,例如/usr/local/bin
(本地管理的软件应该放在哪里),您必须具有超级用户权限,这通常意味着使用sudo
:
$ sudo cp -i mybinary /usr/local/bin
必须注意不要覆盖目标目录中的任何现有文件(这就是我-i
在此处添加的原因)。
要将目录添加到您的$PATH
,请在您的文件中添加一行~/.bashrc
(如果您使用的是bash
):
PATH="$HOME/bin:$PATH"
...如果二进制文件位于$HOME/bin
.
这样做的优点是您不需要拥有超级用户权限或更改/添加计算机上基本系统中的任何内容。您只需将二进制文件移至bin
主目录的目录中即可。
请注意,更改将.bashrc
在下次获取文件时生效,如果您打开新终端或注销并再次登录,或source ~/.bashrc
手动运行,则会发生这种情况。
答案2
您应该阅读更多有关小路多变的。我强烈怀疑您应该适当地使用(或更改)它。
我希望能够将其放入 bin 目录中
我猜你的意思是/bin/
或者/usr/bin/
。我不确定在那里添加您自己的程序是否明智。ln -sv $(realpath foobar.out) /usr/bin/
如果你绝对希望你的程序出现在那里(恕我直言,这可能是一个错误,因为你搞乱了你的发行版),也许最好在它们里面放一个符号链接(例如使用类似的东西)包管理器)。
可能将您的程序安装在/usr/local/bin/
更明智的做法(保留两者/bin/
并/usr/bin/
保持完整,由您提供和管理)Linux发行版)。看最低有效位并阅读更多有关文件层次结构标准。
...就像系统范围的命令,例如...
cd
这是对你的部分的强烈误解(在你问题的原始变体中,你cd
后来正确地删除了)。cd
不是也不可能是可执行文件,它是(并且必须是)shell 的内置命令。
您可能想阅读可免费下载的高级Linux编程了解为什么cd
不能是可执行文件(当前的工作目录是每个进程状态的一部分,每个进程都有自己的状态,并且可以使用以下命令更改它目录(2)...)
答案3
install /path/to/oobar.out /usr/local/bin/
答案4
我想添加@Kusalananda 接受的答案。将自制脚本和程序放在 $HOME/bin 中的另一个优点是,当您升级系统时,您不会丢失它们。这是管理您的个人工具箱的更好方式,并且使其更加便携。