Додати бінарний шлях до мого шляху


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
Гаразд, мені важко було прочитати вашу відповідь (і тим самим помилився), тому я відредагував її, щоб усунути плутанину та видалив протилежну заяву. Сподіваємось, це допомагає.
Лекенштейн

Отже, питання: що краще? Чи є різниця? Ви практично нічого не сказали, ніж ОП.
Radu Rădeanu

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

0

Так само як доповнення до відповіді @souravc ...

Для "Зміна рівня користувача" замість редагування ~/.bashrcфайлу ви можете просто створити каталог $HOME/bin/і розмістити там свої сценарії.

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

myscript

Всього мої 2 копійки. :)

PS- Я намагався розмістити це як коментар до відповіді @souravc, але мені не вистачило репутації. :-(

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.