Я знаю, что мне нужно кое-что получить, но я прошу это для двоичных файлов, которых нет, или тех, которые мне нужны Последняя версия. Каждый раз, когда я пытаюсь установить эти двоичные файлы в Ubuntu, я получаю разные ответы. Конечно, я могу просто вставить корзину в / bin или в каталоги, которые уже есть в моем PATH, но многие приложения заполнены другими файлами, так что это не лучший способ. Я часто вижу инструкции, говорящие мне добавить папку приложения в PATH, но что произойдет, если я установлю около 100 приложений с этой техникой? Разве моя переменная PATH не станет большой и беспорядочной? Кроме того, я бы передавал этот PATH каждому открытому приложению, я не считаю это лучшим способом установки чего-либо в Linux.
Итак, какой путь правильный? Кроме того, если это как-то связано с PATH, что правильный способ добавления путей к PATH? Я всегда вижу множество вариантов и запутываюсь.
Я хотел бы покончить с этим раз и навсегда, потому что я устал устанавливать вещи по-разному, и я хотел сделать это правильным и наиболее элегантным способом.
PATH
предназначен для Вашей оболочки - она говорит оболочку, где команды, которые Вы вводите, как предполагается, живут. Хороший пример этого был на поле OpenSUSE, которое я когда-то имел. На Ubuntu можно ввести iconfig
команда и удар пойдут, "о, я знаю, где это - я буду работать /sbin/ifconfig
". Ну, на значении по умолчанию OpenSUSE PATH
, не имеет /sbin
добавленный к нему, таким образом, bash
скажет "извините, я не знаю где ifconfig
у меня нет записи такого файла". Таким образом, необходимо или работать /sbin/ifconfig
(т.е. полный путь), или делают он умным способом - добавляет /sbin
кому: PATH
.
Хороший пример того, почему Вы хотели бы сделать, - при установке пользовательских сценариев или двоичных файлов. Скажем, Вы сохранили что-то в /opt/my_stuff
папка, и Вы хотите только звонить my_command
по имени. Ну, необходимо будет добавить /opt/my_stuff
кому: PATH
.
Основная идея состоит в том, что Вы хотите добавить или присоединиться исходный $PATH
с новым каталогом. Как Вы можете или не можете знать, объекты в PATH
переменная разграничена с :
. Вы также хотите export
переменная, так, чтобы другие программы (дети Вашей оболочки) знали, где искать материал. Все это должно произойти в конце ~/.bashrc
, так, чтобы при открытии оболочки и она считала Ваш ~/.bashrc
конфигурация, это знает, где все расположено.
Вот пример от моего ~/.bashrc
:
export PATH=$PATH:"/opt/microchip/xc16/v1.25/bin"
В этом случае, исходный $PATH
будет расширен до строки каталогов. Мы просто добавляем еще один к нему и сохраняем его назад. Ничто сложное.
Если Вы устанавливаете файл от .deb
архив или .run
сценарий, Вы не должны волноваться о PATH
часть. Это - обязанность автора программного обеспечения упростить процесс установки. Как правило, они настроят свою установку для сохранения материала в один из общих каталогов, которые уже принадлежат PATH
: в сценарии установки будет сказано, "эй, установите это программное обеспечение в/usr/bin', и Вы сможете использовать его без дополнительного усилия.
Если авторы программного обеспечения устанавливают его где-нибудь, это обычно не находится в PATH
, они должны будут настроить Ваш PATH
переменная или Вы должны сделать это сами. В примере выше, каталог /opt/microchip
был создан, когда я устанавливал IDE Микрочипа и компилятор. Их установщик автоматически поместил ту строку в мой ~/.bashrc
. Я часто пишу сценарии, которые входят /opt
, таким образом, я обычно упоминаю в инструкциях, что пользователи должны настроить PATH
самостоятельно.
Вы часто видите, что люди рекомендуют сохранить сценарий и другие типы программного обеспечения в ~/bin
. Эта папка принадлежит Вам - Ваш пользователь, поэтому если Вы не хотите совместно использовать приложение с другими людьми на Вашей машине - это - то, куда Вы поместили его. Различие с /opt
это, как я уже упомянул в нескольких местах, /opt
нейтральная земля. Таким образом, если я как системный администратор хочу, чтобы оба моих семейства также имели доступ к приложению с их учетными записями - это - то, куда я поместил его.
До bash
оболочка идет, она уже обрабатывает ~/bin
быть добавленным к PATH
для Вас. Другие оболочки, как /bin/sh
, или tcsh
или ksh
не будет делать этого, поэтому иметь это в виду, если Вы будете работать над другой системой или захотите использовать другую оболочку в своей Ubuntu.
Я часто вижу инструкции говорить мне добавлять папку приложения в ПУТИ, но что произошло бы, если я устанавливаю как, 100 приложений с этой техникой? РАЗВЕ моя переменная ПУТИ не стала бы большой и грязной?
Едва ли - что, как предполагается, входит в путь, каталоги. Если Вы обычно устанавливаете программное обеспечение в единственном каталоге (такой как ~/bin
или /opt
) это потребует добавления только /opt
. Если каждое программное обеспечение должно жить в своей собственной папке под /opt
, затем да - необходимо было бы добавить каждый сингл один к PATH
. То, что можно сделать, однако, является записью сценарий для добавления всех каталогов к PATH
. Так, скажем:
$ for item in /opt/* ; do
if [ -d "$item" ]; then
PATH="$PATH:$item"
echo "$VAR"
fi
done
И это может жить превосходное как функция в конце Вашего ~/.bashrc
, так, чтобы каждый раз Вы открыли оболочку, все каталоги под /opt
добавляются автоматически.
В моем примере я пишу много сценариев. Они все живут в ~/bin
так как все они - просто единственные файлы, и нет никакой потребности в них жить в отдельных каталогах.
Кроме того, я передал бы этот ПУТЬ к каждому приложению, которое я открываю, я не рассматриваю это как лучший способ установить вещи в Linux.
Это что export
переменная для. Это передает материал дочерним процессам Вашей оболочки. Вы как пользователь ничего не должны делать. Кроме того, как я упомянул, это обычно не делало - авторы программного обеспечения создают пакеты, которые входят в каталоги, которые уже находятся в PATH
как /usr/bin
.
Каталоги, которые не находятся в /opt
просто нейтральная земля и вид способа для разработчиков сказать "эй, наше приложение является третьей стороной, таким образом, это не что-то значение по умолчанию".
После того как вещь, которые не были покрыты здесь, .desktop
файлы. Для помещения просто это версия Linux ярлыка Windows, но на стероидах. Позволяет говорят, что я имею, создают приложение для GUI в Python, и я хочу, чтобы он жил в /opt
папка, но я не хочу, чтобы пользователь назвал его из командной строки - я хочу, чтобы они использовали хороший и аккуратный настольный ярлык. Ну, это то, где .desktop
файлы играют роль. Вот пример:
$ cat /home/xieerqi/.local/share/applications/vivaldi.desktop
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Name=周迅 mv - YouTube
Icon=vivaldi
Path=/home/xieerqi
Exec=/opt/vivaldi/vivaldi-bin --ppapi-flash-path --ppapi-flash-version --always-authorize-plugins --enable-npapi --no-first-run
StartupNotify=false
StartupWMClass=Vivaldi
OnlyShowIn=Unity;
X-UnityGenerated=true
В то время как vivaldi
приложение живет счастливо в /opt
никогда не будучи должен быть сосланным в PATH
, Я могу использовать a .desktop
ярлык для запуска его. Снова, необходимо было бы вручную создать один для каждого приложения, но поскольку можно предположить, что Linux имеет сценарии способы автоматизировать даже это.
Таким образом, каков реальный и корректный способ установить программное обеспечение на Linux? Нет ни одного, точно так же, как нет пути в Windows или Mac OS X. Ваше Приложение Windows могло быть единственным .exe
или папка с .exe
и живой превосходный в C:\
папка. То же здесь - на Linux у Вас могут быть сценарий или целый пакет программного обеспечения, живого в /opt
, или ~/bin
или везде, где Вы выбираете. Выбор, конечно, должен некоторым расширяться быть выровненным по ширине. Вы хотите, чтобы приложение было доступно root
только, Вам only
, или совместно использованный? Вы хотите, чтобы это было доступно через просто его имя, или Вы хотите ввести в полном пути к приложению?
Правовая оговорка: То, что следует ниже, является моим личным мнением.
В Ubuntu, эти ~/.profile
имеет:
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
, что означает, присутствует ли ~/bin
каталог, добавьте это к эти PATH
в запуске.
, Таким образом, нужно поместить все пользовательские исполняемые файлы в ~/bin
каталог, это гарантирует:
PATH
кроме того, если там существует некоторые исполняемые файлы, которые не могут быть помещены там, Вы могли легко создать символьную ссылку на этом каталоге, который относится к тому исполняемому файлу.