Добавить бинарный файл в мой путь


15

У меня есть исполняемый файл. Я хочу выполнить исполняемый файл в терминале с именем только как другие команды.

Я могу вставить свой исполняемый файл /usr/local/binили добавить его PATHв ~/.bashrc. Оба будут работать.

Что лучше? Есть ли разница?

Ответы:


12

Например, позвольте мне предположить, у вас есть исполняемый файл myscript. Вам нужно запустить его из терминала, как,

/path/to/myscript

Изменение уровня пользователя

Если вы добавите к PATHэтому исполняемому файлу ~/.bashrc, вы можете запустить исполняемый файл с именем только из любого места ( Avinash Raj уже упоминалось), так как

myscript

Но изменения будут затронуты на уровне пользователя . Это означает, что если у вас есть другие пользователи, они не могут получить доступ к исполняемому файлу только с именем. Если у них есть соответствующее разрешение, им нужно запустить исполняемый файл как,

/path/to/myscript

Кроме того, вы не сможете запускать скрипт как sudo, так как он не находится в PATHкорневом каталоге. Для запуска по мере sudoнеобходимости,

sudo /path/to/myscript

изменение уровня системы

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

myscript

В этом случае вы можете запустить исполняемый файл так sudoже, как,

sudo myscript

Теперь выберите один из способов в зависимости от ваших потребностей.


2

Добавление местоположения файла к вашей $PATHпеременной в вашем ~/.bashrcфайле позволит вам выполнять только из любого места, тогда как внесение его /usr/bin/позволит всем пользователям вашей системы выполнить этот файл из любого места.

Это почему? Потому что ваш ~/.bashrcфайл виден только вам как пользователю. Таким образом, все сделанные изменения переменных ограничены вами. Принимая во внимание, что добавление этого файла к /usr/binпозволит файлу оставаться там для всех пользователей и, поскольку /usr/binон присутствует в $PATHпеременной, если кто-то не удаляет его, позволит всем пользователям выполнять его из любого места.


1

Если вы поместите исполняемый файл в /usr/binили /usr/local/bin, то вы сможете запустить эту программу, указав только имя ( your-programвместо /usr/local/bin/your-program).

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


1
Эта информация неверна, вы можете запустить исполняемый файл, даже если вы не находитесь в «этом каталоге».
Лекенстейн

Как это ложно? Пожалуйста, объясните немного больше.
Авинаш Радж

1
Хорошо, мне было трудно прочитать ваш ответ (и, таким образом, сделал ошибку), поэтому я отредактировал его, чтобы устранить путаницу, и удалил голосование вниз. Надеюсь, это поможет.
Лекенштейн

Итак, вопрос: что лучше? Есть ли разница? Вы практически ничего не сказали, кроме ОП.
Раду Рэдяну

Я ответил на вопрос ОС, но не в кратком формате.
Авинаш Радж

0

Так же, как дополнение к ответу @souravc ...

Для «Изменение уровня пользователя» вместо редактирования ~/.bashrcфайла вы можете просто создать каталог $HOME/bin/и поместить туда свои скрипты.

Каталог будет автоматически добавлен в PATH(по крайней мере, начиная с Ubuntu 12.04), что означает, что вы сможете запускать все скрипты / исполняемые файлы внутри этого каталога с помощью простого:

myscript

Просто мои 2 цента. :)

PS - Я пытался опубликовать это как комментарий к ответу @souravc, но мне не хватило репутации. :-(

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.