Як це зробити, щоб я міг запустити певну програму, просто ввівши її ім'я в консолі?


17

Нещодавно я встановив Light Table, завантажуючи її з сховища git, і дотримувався інструкцій на цьому веб-сайті, щоб створити запуск робочого столу.

Тепер я хочу запустити програму, набравши безпосередньо термінал

LightTable

і ні

./opt/LightTable/deploy/LightTable

6
@ user68186 Додавання каталогу, що містить, до PATHзмінної середовища часто не є найкращим способом цього досягти, а іноді навіть може порушити систему або створити вразливості безпеки. (Треба врахувати будь-які інші виконувані файли, які будуть перетворені на команди з цього пункту, а також те, куди в PATHнього додано.) Додавання псевдоніму оболонки, як описано тут у відповідях, краще для тих, хто не хоче розглядати такі складності; він також більш вузько адаптований до конкретної програми, про яку йдеться. Таким чином, це не є дублікатом цього питання, хоча вони трохи перетинаються.
Елія Каган

Пов’язаний (але не обов'язково дублікат): Як додати каталог до мого шляху?
Сет

Відповіді:


20

Це можна грубо здійснити за допомогою псевдоніма. Ви можете створити постійний псевдонім bash, додавши у файл один рядок .bashrc.

У терміналі запустити nano ~/.bashrc

Додайте наступний рядок внизу:

alias LightTable='/full/path/opt/LightTable/deploy/LightTable'

Зауважте, я додав тобі повний шлях замість цього, .так що це буде працювати в будь-якому робочому каталозі. Закрийте і знову відкрийте термінал або запустіть, source ~/.bashrcщоб перезавантажити файл bashrc.


7

Це не елементарне питання, найкращий спосіб зробити це - створити псевдонім. Я використовую netbeans як приклад

Відкритий термінал Ctrl+Alt+T

nano ~/.bashrc

напишіть це внизу файлу:

alias netbeans='/home/john/netbeans-7.0.1/bin/netbeans'

Ctrl + x

Y

Enter

Слово netbeans - це команда, яку ви використаєте для запуску програми, ви можете змінити її на все, що вам потрібно. Всередині лапок є команда, яку потрібно запустити, коли викликається псевдонім netbeans.

Для того, щоб ця команда була активною, вам потрібно знову відкрити термінал


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

5

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

Там, де ви створюєте псевдонім, ви самі (.bashrc, .profile тощо). Однак я особисто відпускаю всі свої змінні середовища у свій .bash_aliasesфайл (потрібно створити їх на перший погляд).

Створіть файл .bash_aliases у своїй папці HOME та відредагуйте його будь-коли. Потім, щоб створити ярлик, ви можете:

alias LightTable='path_to_opt/LightTable/deploy/LightTable'

Збережіть файл і все.

ps: Ви також можете поставити псевдонім як легкий і легкий, якщо ви забудете прописати великі літери L або якщо капсул активований випадково, тому вам не доведеться вводити команду знову.


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

Рекомендується /usr/local/binзамість цього помістити речі, які не встановлені через Apt . Речі в програмі /usr/binможуть бути стерті або замінені пакетами Apt, але речі в /usr/local/binних залишаються в спокої.
Чай Т. Рекс

3

Я не впевнений, чому інші відповіді цього не запропонували, але, як насправді зазначалося в ОП, передчуття $PATHзмінної було б таким, яким я б цього досяг:

echo 'PATH=/opt/LightTable/deploy:$PATH' >> ~/.bash_profile
source ~/.bash_profile

Потім запустіть із:

LightTable

Примітка: Я б тоді псевдонім , LightTableщоб lighttableдля простоти використання: echo 'alias LightTable=lighttable' >> ~/.bash_alias && source ~/.bash_alias.
JoeNyland

2

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

sudo ln -s full_path_to_opt/LightTable/deploy/LightTable  /usr/local/bin

Це створить ярлик у / usr / local / bin (який уже має бути у вашому PATH!) До місця, де насправді є LightTable. Зауважте також, що ви можете перейменувати символьне посилання також, якщо вам не подобаються великі літери у "LightTable":

sudo ln -s full_path_to_opt/LightTable/deploy/LightTable  /usr/local/bin/lighttable

Для довідки, якщо програма незрозуміло розроблена, тобто скаржиться на те, що не знайшли конфігураційні файли чи бібліотеки чи інше, то іншим рішенням, яке може бути кориснішим, є створення скрипту для обгортки. Для цього просто створіть файл (куди вам подобається на даний момент) під назвою "LightTable" (або що завгодно більше) з цим у ньому:

#!/bin/sh
# Simple script to run LightTable
if ! cd full_path_to_opt/LightTable/deploy/LightTable ; then
    echo "$0: error: LightTable directory not found." >&2
    exit 1
fi
exec ./LightTable

Змініть дозволи цього файлу:

chmod 755 <wrapper_script>

і спробуйте виконати його просто, щоб побачити, чи працює він, а якщо так, то перемістіть його в / usr / local / bin:

sudo mv -i <wrapper_script> /usr/local/bin

Те, що ви говорите, правдиве, але не відповіло, чого він хотів. Він хотів виконати його, використовуючи ім'я файлу / псевдоніма файлу
Джонн

1
@Johnn: Вибачте, я не розумію, в чому різниця. Я розумію питання як прохання про спосіб виконання програми, не вказуючи її шлях. Незалежно від того, чи використовує оболонку псевдонім або механізм PATH, немає значення, якщо ви просто просите виконати програму. Якщо ви хотіли зробити щось інше з файлом, використовуючи псевдонім, щоб надати повний шлях до файлу, це справді найкращий спосіб, але він (і) він просто хоче запустити файл. Я помиляюся?
Зоравар

Ні, це не я був винен, правильно.
Джонн

1
@Johnn: А, добре, дякую за критичне око все одно!
Зоравар

0

Я намагався це зробити, коли почав працювати в Ubuntu. Коли ви кладете LightTable в термінал, він шукає файл з назвою LightTable в $PATHкаталогах. ви можете поставити, echo $PATHщоб отримати каталоги.

Якщо ви хочете виконати свою програму LightTable в ./opt/LightTable/deploy/LightTable, тоді вам потрібно зробити, щоб розмістити файл Light Table в. /usr/games or /usr/bin.Але для цього потрібні суперкористувацькі дозволи

відкрийте термінал Ctrl + Alt + T

потім покласти

Я вважаю за краще створити ярлик LightTable за допомогою

sudo ln -s path/to/LightTable  /usr/games/LightTable

Потім введіть пароль SU. Потім ви можете отримати доступ до своєї програми за допомогою LightTableтерміналу

Ви можете помістити /usr/binабо /usr/local/binзамість нього /usr/gamesвсе, що є $PATHкаталогом. Це не потрібно бути таким, але я рекомендую розмістити його в/usr/local/bin

Я також рекомендую замінити вихідний файл lightpathзамість цьогоLightPath

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