Как я могу сделать так, чтобы я мог запустить определенную программу, просто набрав ее имя в консоли?

17

Я только что установил Light Table, загружая его из репозитория git, и следовал инструкциям на этом сайте, чтобы создать программу запуска на рабочем столе.

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

LightTable

и не

./opt/LightTable/deploy/LightTable
dapias
источник
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.

Чтобы эта команда была активной, вам необходимо заново открыть Терминал

Johnn
источник
Я не могу проголосовать из-за своей низкой репутации, но спасибо за ответ, это было очень полезно
dapias
5

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

Вы можете создать псевдоним самостоятельно (.bashrc, .profile и т. Д.). Однако я лично включил все свои переменные окружения в мой .bash_aliasesфайл (вам нужно создать его с первого взгляда).

Создайте файл .bash_aliases в папке HOME и отредактируйте его так, как вам нравится. Затем, чтобы создать ярлык, вы можете сделать:

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

Сохраните файл и все.

ps: вы также можете поместить псевдоним как lighttable и LIGHTTABLE на случай, если забудете прописные буквы L или если capslock активен случайно, чтобы вам не приходилось вводить команду снова.

Geo
источник
Я не могу проголосовать из-за своей низкой репутации, но спасибо за ответ, это было очень полезно
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
JoeNyland
источник
Примечание: Я бы тогда псевдоним , 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, не имеет значения, если вы просто просите выполнить программу. Если вы хотите сделать что-то еще с файлом, тогда использование псевдонима для предоставления полного пути к файлу - действительно лучший способ, но он просто хочет запустить файл. Я ошибаюсь?
Zorawar
Нет, это была моя вина, ты прав.
Джонн
1
@Johnn: Ах, хорошо, спасибо за критический взгляд в любом случае!
Zorawar
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

Прашант Шрирам
источник