it-swarm-ru.tech

Как я могу сделать программу исполняемой отовсюду

Что мне делать, если я хочу иметь возможность запускать определенную программу независимо от моего текущего каталога? Должен ли я создать символическую ссылку на программу в /bin папка?

79
aneuryzm

Если вы просто наберете export PATH=$PATH:</path/to/file> в командной строке это будет продолжаться только на протяжении сеанса.

Если вы хотите изменить его навсегда, добавьте export PATH=$PATH:</path/to/file> к вашему ~/.bashrc файлу (просто в конце все нормально).

55
oadams

Короткий ответ заключается в том, что для запуска программы, независимо от того, какой у вас каталог, вам нужно иметь каталог программы в вашем пути поиска. Проблема может быть решена путем помещения программы в папку, которая уже находится в этом пути, или путем добавления новой папки в путь - все будет работать. Лучший ответ зависит от:

Является ли эта программа загруженной программой, которую вы сами скомпилировали из исходного кода?

Вполне вероятно, уже будет установлен механизм установки. В папке, с которой вы скомпилировали программу, от имени пользователя root запустите 'make install'

Является ли эта программа загруженной программой, которую вы хотите сделать доступной как часть стандартных программ на компьютере?

Имеет смысл поместить приложение такого типа в стандартную папку. для таких программ довольно часто используют каталоги, такие как/usr/local/bin. Для этого вам понадобится root-доступ.

Это программа, которую вы написали для себя и/или у вас нет специальных привилегий на компьютере.

Создание папки в вашем домашнем каталоге с именем 'bin' и размещение в ней программы. Вам может понадобиться отредактировать скрипт входа в систему, чтобы добавить полный путь к этой папке (например,/usr/home/jeremy/bin)

Хотя вы можете просто добавить его текущий каталог в путь поиска, вам придется продолжать делать это с каждой новой программой - и это больше работы в долгосрочной перспективе.

24
Michael Shaw

Размещение ссылки на файл в /bin каталог не лучшая вещь по нескольким причинам.

  • Если фактический исполняемый файл находится в месте, которое некоторые пользователи не могут увидеть или выполнить, они считают его плохой ссылкой или недействующей программой.
  • /bin каталог должен быть зарезервирован для программ, необходимых для работы системы (например, chmod, mkdir и ​​т. д.).

Вы действительно можете поместить (установить) исполняемый файл в /usr/bin/ или даже /usr/local/bin/. Конечно, вы вручную установили программу в этот момент; ваш дистрибутив не будет отслеживать его так же, как остальные ваши программы - вам придется вручную обновлять его, когда это необходимо, и удалять его вручную, если вы этого хотите. Кроме того, вам нужно знать, от каких пакетов это зависит (похоже, вы уже используете программу, так что об этом позаботились, но в целом ...).

Если я не настраиваю программу, которую, как я ожидаю, будут использовать другие пользователи, я обычно этого не делаю: я создаю каталог bin только для себя в своем домашнем каталоге и редактирую свой профиль Shell, добавляя ~/bin/ к моей PATH переменной среды. Мне легче отслеживать программы, которые я установил таким образом, потому что они отделены от остальной системы.

17
Shawn J. Goff

Если вы хотите запустить команду foo в каталоге, в котором находится ваша оболочка, у вас есть два варианта:

  1. Тип ./foo в командной строке.

  2. Добавить . каталог (. - это имя для "текущего каталога") переменной окружения PATH; как это сделать, зависит от используемой вами оболочки:

    • для оболочек типа Борна (bash, zsh, ksh и т. д.) вы пишете (см. эта страница для получения дополнительной информации):

      export PATH=$PATH:.
      
    • для оболочек типа csh (tcsh, csh) вы пишете (см. эта страница для получения дополнительной информации):

      set path = ( $path .)
      

Обратите внимание, что 2. это угроза безопасности в многопользовательских системах: представьте, что вы cd в каталог /tmp и ​​злонамеренный пользователь создал двоичный файл вредоносного ПО с именем ls там ..

6
Riccardo Murri

Возникновение PATH по ошибке открывает вам возможность запуска вредоносных программ. Стандартно установить "локальный" материал под /usr/local (см. FHS , который кодирует использование Unix: немного устарел, но дает обоснование)., /usr/local/bin обычно находится в PATH для всех пользователей.

Мои "локально установленные" программы находятся в $HOME/bin, установите в стандартном танце ./configure --prefix=$HOME ..., в сочетании с несколькими (bash) псевдонимами, например, для выбора. самодельный git поверх системного (не конфликтующие находятся в PATH в самом конце.

1
vonbrand