Як я можу зробити програму виконуваною звідусіль


75

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


5
ні, ви повинні використовувати змінну PATH оболонки.
msw

7
Я думаю, було б добре створити особисту ~/bin/папку, додати ТОЙ на свій шлях і створити символьні посилання в цій папці до всього, що ви хотіли виконати з будь-якого місця.
frabjous

1
Ви також можете встановити псевдонім з повним шляхом до двійкового файлу, який ви хочете виконати.
datasmurf

Відповіді:


53

Якщо ви просто введете export PATH=$PATH:</path/to/file>командний рядок, він триватиме лише протягом тривалості сеансу.

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


11
Спасибі це працює. Для новачків, як я, не забудьте опустити кутові дужки <>. Так: $ PATH: / ваш / файл / шлях
SAm

4
Також не включайте саме ім'я файлу програми в шлях.
Оллі Niemitalo

23

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

Ця програма - це завантажена програма, яку ви склали самостійно з джерела?

Цілком ймовірно, що механізм встановлення вже буде. У папці, яку ви склали програму, як root, запустіть "make install"

Чи є ця програма завантаженою програмою, яку ви хочете зробити доступною у складі стандартних програм на комп'ютері?

Має сенс помістити подібний додаток у стандартну папку. досить часто використовувати для таких програм каталоги, такі як / usr / local / bin. Для цього вам знадобиться кореневий доступ.

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

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

Хоча ви можете просто додати його поточний каталог до шляху пошуку, вам доведеться продовжувати робити це з кожною новою програмою - і це буде більше роботи в довгостроковій перспективі.


15

Розміщення посилання на файл у /binкаталозі не найкраще робити з кількох причин.

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

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

Якщо я не налаштовую програму, яку я очікую від використання інших користувачів, зазвичай це не те, що я зазвичай роблю: я створюю каталог бін тільки для мене в домашньому каталозі та редагую свій профіль оболонки, щоб додати ~/bin/до моєї PATHзмінної середовища. Мені легше відслідковувати програми, які я встановив таким чином, оскільки він відокремлений від решти системи.


6

Якщо ви хочете запустити команду fooв каталозі, в якому зараз знаходиться ваша оболонка, у вас в основному є два варіанти:

  1. Введіть ./fooу рядку оболонки.

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

    • для оболонок типу Борна (bash, zsh, ksh тощо) ви пишете (див. цю сторінку для отримання додаткової інформації):

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

      set path = ( $path .)
      

Зауважте, що 2. - це ризик для безпеки для багатокористувацьких систем: уявіть, що ви cdдовіритесь, /tmpі зловмисний користувач створив там бінарний код зловмисного програмного забезпечення ls.


2
так, я думаю, що варіанти показують вам, що Unix дасть вам робити речі, що вважається поганою практикою. Додавання. до вашого шляху також можна створити інші побічні ефекти, які, як правило, погані.
Двірник Unix

1

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

Мої "локально встановлені" програми є $HOME/bin, встановлені в стандартному танці ./configure --prefix=$HOME ..., поєднані з декількома (баш) псевдонімами, щоб вибрати, наприклад, власноруч створений git через систему один (не зіткнення знайдені в PATHсамому кінці.

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