在bin中创建一个程序

在bin中创建一个程序

我已经编译链接并用 C++ 创建了一个程序,现在我有

foobar.out

我希望能够将其放入 bin 目录中并像系统范围命令一样使用它,例如

ssh, echo, bash, cd...

我怎样才能做到这一点?

答案1

有两种方法可以让您在不指定路径的情况下运行二进制文件(不包括创建别名或 shell 函数以使用绝对路径执行它):

  1. 将其复制到您的$PATH.
  2. 将其所在目录添加到您的$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 中的另一个优点是,当您升级系统时,您不会丢失它们。这是管理您的个人工具箱的更好方式,并且使其更加便携。

相关内容