Установка переменной командной строки bash для запуска моего приложения - PullRequest
2 голосов
/ 14 июля 2009

Я довольно новичок в программировании для сред Linux, поэтому я точно не знаю, что искать, чтобы ответить на этот вопрос для себя. Мне нужно понять, как приложения настраивают оболочку на принятие определенной команды для их запуска. Например, вы можете запустить Firefox из командной строки, выполнив команду: firefox.

Я не знаю, где это определено. Makefile? Настроить скрипт? В самом исходном коде?

Буду очень признателен за любые ресурсы / материалы по программированию в Linux, подобные этим!

Спасибо.

Ответы [ 6 ]

5 голосов
/ 14 июля 2009

Firefox запускается командой «firefox», поскольку в одной из папок в переменной среды $ PATH с именем «firefox» находится исполняемый файл.

2 голосов
/ 14 июля 2009

Обычно оболочка имеет переменную окружения с именем $ PATH. Это просто упорядоченный список всех каталогов, которые нужно посмотреть, когда кто-нибудь наберет команду. Как только он находит исполняемый файл (под которым я подразумеваю файл, для которого у вас есть разрешения на выполнение, а не файл с расширением .exe) с тем же именем, что и введенный, он запускает этот файл. Общие каталоги в $ PATH могут быть / bin, / usr / local / bin, ~ / bin и т. Д.

Итак, когда вы набираете 'firefox', оболочка просматривает все каталоги в $ PATH, пока не найдет / usr / local / bin / firefox, который затем запустится. Чтобы ваши собственные программы работали одинаково, вам нужно либо поместить их (или символическую ссылку на них) в каталог, который, вероятно, будет находиться в пути каждого пользователя (/ usr / local / bin / - хороший выбор ), или вам нужно будет заставить своих пользователей добавлять каталог вашей программы в их $ PATH.

Более подробное описание см. В статье Википедии о переменной $ PATH.

2 голосов
/ 14 июля 2009

Вы говорите о переменной PATH? Кажется, что вы.

В Linux вы должны набрать: "echo $ PATH" (без кавычек) и получить разделенный ":" список мест, где расположены программы (например, firefox).

Если вам нужно что-то добавить к своему пути, вы должны сделать:

export PATH=$PATH:/another/directory

В вашей оболочке (которая, скорее всего, bash)

Вы также можете ввести:

which firefox

Для отображения местоположения исполняемого файла Firefox.

0 голосов
/ 14 июля 2009

Часто большие пакеты устанавливаются в /opt со скриптом-оберткой или ссылкой где-то в PATH. Например, в моей системе Google Picasa установлен в /opt/google/picasa и есть символическая ссылка от /usr/bin/picasa до /opt/google/picasa/3.0/picasa

Firefox находится на /usr/bin/firefox в моей системе, и это символическая ссылка на /usr/bin/firefox-3.0, которая сама является символической ссылкой на /usr/lib/firefox-3.0.11/firefox.sh - Этот файл оболочки возится до тех пор, пока он, наконец, не запускает /usr/lib/firefox-3.0.11/firefox (если не находит причину делать что-то еще). Это, наконец, двоичный исполняемый файл. Так что /usr/lib - это то, где firefox установлено для меня.

Вы можете использовать эту команду, чтобы узнать, где находится программа:

type -a firefox

Затем вы можете узнать, какой файл он использует:

file /usr/bin/firefox

Также см. Стандарт файловой системы Heirarchy для получения дополнительной информации о рекомендуемых местах для файлов и программ.

0 голосов
/ 14 июля 2009

Он должен быть в пути, как все остальные упоминали, но вам также может понадобиться сделать его исполняемым с чем-то вроде этого:

chmod +x /path/to/file

А если это скрипт, обычно вверху есть шебанг, который сообщает операционной системе, что использовать для его выполнения:

#! /usr/bin/python
0 голосов
/ 14 июля 2009

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

...