Создание программы в корзине

Я скомпилировал связанную и создал программу на C ++, теперь у меня есть

foobar.out 

Я хочу, чтобы его можно было поместить в каталог bin и использовать его как системные команды, например

 ssh, echo, bash, cd... 

Как я могу это достичь?

5 Solutions collect form web for “Создание программы в корзине”

Существует два способа разрешить запуск двоичного файла без указания его пути (не включая создание псевдонимов или функций оболочки для выполнения его с абсолютным путем для вас):

  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 вручную.

Вы должны больше узнать о переменной PATH . Я сильно подозреваю, что вы должны использовать (или изменить) его соответствующим образом.

Я хочу, чтобы его можно было поместить в каталог bin

Наверное, вы имеете в виду /bin/ или /usr/bin/ . Я не уверен, что было бы целесообразно добавлять туда свои собственные программы. Возможно, было бы лучше разместить в них символическую ссылку (например, используя что-то вроде ln -sv $(realpath foobar.out) /usr/bin/ ), если вы абсолютно хотите, чтобы ваша программа появилась там (что ИМХО, вероятно, является ошибкой, поскольку вы запутались с менеджером пакетов вашего дистрибутива).

Вероятно, установка вашей программы в /usr/local/bin/ намного мудрее (чтобы оставить /bin/ и /usr/bin/ intact, как предусмотрено и управляется дистрибутивом Linux ). См. LSB и подробнее о стандарте иерархии файлов .

… как системные команды, например …. cd

Это сильное заблуждение вашей стороны (в исходном варианте вашего вопроса вы по праву удалили cd позже). cd не является и не может быть исполняемым , он (и должен быть) встроенной командой вашей оболочки.

Вы можете прочитать свободно загружаемое Расширенное программирование Linux, чтобы понять, почему cd не может быть исполняемым (текущий рабочий каталог является частью состояния каждого процесса, и каждый процесс имеет свой собственный и может изменить его с помощью chdir (2) . ..)

 install /path/to/oobar.out /usr/local/bin/ 

Я бы добавил к принятому ответу @ Kusalananda. Еще одно преимущество размещения ваших домашних пивных скриптов и программ в $ HOME / bin – это когда вы обновляете свою систему, вы не потеряете их. Это лучший способ управлять вашим личным набором инструментов и делает его более портативным.

Скопируйте исполняемый файл в /usr/bin/ , затем вы сможете выполнить его как echo или любой другой исполняемый файл в /usr/bin/

 cp -a <filename> /usr/bin/ chmod a+x /usr/bin/filename 
  • Где Debian 8.1 устанавливает adduser?
  • Невозможно изменить JAVA_HOME
  • пытаясь установить curl с homebrew, получив «несовместимую версию библиотеки» для libcurl.4.dylib
  • Что вы делаете, когда пытаетесь сделать sudo и PATH корня ушли в kerblooey?
  • Bash не может видеть обновление PATH
  • Почему bash не уважает $ {PATH} и / или символические ссылки?
  • Как использовать (1) с системным значением $ PATH?
  • Могут ли быть неканонизированные формы путей файловой системы значительными? (например, «foo // bar», «foo /./ bar» и «foo /../ bar»)
  • Показать PATH в удобном для восприятия человеком способом
  • Безопасно ли для программы добавить свой каталог bin в PATH?
  • Измените каталог по умолчанию для одной конкретной программы, не изменяя ее путь
  • Linux и Unix - лучшая ОС в мире.