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

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

foobar.out 

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

 ssh, echo, bash, cd... 

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

  • Bash игнорирует мой PATH и его кеш
  • GIT на «горном льве» не будет выполнять команды
  • Как определить, какой исполняемый файл на моем пути будет запущен?
  • Найти местоположение сценария с исходным кодом
  • Безопасный способ установки сценария .sh в / usr / local / bin?
  • Чтобы иметь Eclipse 4.5 в пути?
  • bash: adduser: команда не найдена на centOS
  • исполняемый обертку, запустить исходный исполняемый файл из хвоста PATH
  • 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 
    Interesting Posts
    Linux и Unix - лучшая ОС в мире.