Использовать альтернативы или добавить в PATH?

Я немного запутался в правильном способе сделать сценарий глобально доступным с терминала, например, командой. Существует два способа использования утилиты alternatives , в основном создание символической ссылки на / usr / bin и добавление к PATH . Я понимаю, что добавление в PATH означает добавление полного каталога, и это может работать для каждого пользователя. Но мне не нравится бесполезность процесса. Похоже (по крайней мере, из моего POV), что у каждого дистрибутива есть свои собственные причуды, и даже разные версии из них дают мне проблемы с добавлением чего-то в PATH , а затем в Интернете есть ответы на вопрос, как это сделать или даже больше важно, как НЕ делать это.

При установке Java я обычно нахожу инструкции по использованию alternatives чтобы сделать Java и javac доступными глобально, например:

альтернативы –install / usr / bin / java java /opt/jdk1.7.0_79/bin/java 2

Теперь, что не так с использованием alternatives чаще, и я нахожу его в основном в этих обучающих программах по настройке Java? Я использую его для создания Activator Activator как доступного для всего мира. Мне также легче использовать инструменты автоматизации, такие как Ansible. Что-то не так с точки зрения администратора?

2 Solutions collect form web for “Использовать альтернативы или добавить в PATH?”

Во-первых, альтернативы от debian и не будут работать в redhat, freebsd или многих других системах. Во-вторых, стандартная рекомендация – использовать / usr / bin для пакетов поставщиков, / выбрать сторонние пакеты, / usr / local / bin для локальных исполняемых файлов и задать путь для пользовательских исполняемых файлов.

альтернативы предназначены там, где вы можете иметь несколько пакетов, обеспечивающих такую ​​же функциональность, например, есть как минимум три пакета mailx, два awk-пакета и несколько пакетов java, доступных в debian.

Теперь к мясу: почему в учебниках используются альтернативы, как вы показываете? Поскольку альтернативы используются с упаковкой debian, это позволяет пакет thirdparty в основном действовать как пакет поставщиков. Должны ли вы использовать альтернативы вместо установки? Абсолютно нет, альтернативы не устанавливают разрешения.


Одна из основных идей в unix заключается в том, что все это файл. (Это не совсем верно, если это когда-либо было, но это как цель дизайна, сформировало много вещей.) Теперь есть три вещи, которые вы можете сделать с файлом, связанным с разрешениями. Они читаются, записываются и исполняются. При чтении или записи существует два способа указать файл для открытия. Это абсолютный путь (путь к корневому каталогу) или относительный путь (путь к текущему каталогу). Выполнение немного сложнее в том, что есть три способа указать исполняемый файл. Это абсолютный путь, голое имя файла и относительный путь. Абсолютный путь такой же, как и выше. относительный путь похож на предыдущий, но используется только при явном указании (имя включает косую черту), или путь включает относительный путь. Путь указан для каждого процесса в переменной среды PATH (которая наследуется от родительского процесса во время вилки). Путь – это список каталогов для поиска исполняемого файла, когда исполняемый файл указан без косой черты имени. Чтобы упростить администрирование (и скорость поиска исполняемых файлов), исполняемые файлы собираются в небольшое количество каталогов. Большинство исполняемых файлов находятся в / bin, / usr / bin или / usr / local / bin с исполняемыми файлами специального назначения, помещенными в / sbin, / usr / sbin, / usr / local / sbin и / usr / games. Некоторые пользователи будут иметь дополнительные бинарные файлы, размещенные в других местах для личного использования. Мне нравится размещать шахту в ~ / .bin, но ~ / bin также является обычным явлением, и иногда используются другие каталоги в соответствии с требованиями пользователя.

При размещении исполняемых файлов для совместного использования каждый пользователь может сообщать другим пользователям, где находится двоичный файл, или помещать его в общую папку. При размещении исполняемых файлов в общем месте вы можете либо скопировать файл, либо установить его разрешения вручную, либо использовать install, который позаботится о деталях более простым способом. Иногда вы устанавливаете сложные сторонние пакеты и не хотите, чтобы они загромождали основные части файловой системы всеми связанными файлами (библиотеками и т. Д.) И помещали их в / opt / package или / opt / vendor / package. Вы можете добавить соответствующий каталог в путь или поместить сценарий оболочки или символическую ссылку в стандартный каталог. альтернативы помещают символическую ссылку и запись в базу данных, так что, когда у вас имеется более одной доступной программы, которая имеет те же основные функции и одно и то же имя исполняемого файла, используется правильный.

[Что такое] правильный способ сделать сценарий глобально доступным с терминала, например, команду

Один из способов – добавить команду в /usr/local/bin и убедиться, что этот единственный каталог находится в PATH . Если у вас есть полное приложение с несколькими командами, было бы неразумно добавлять символические ссылки в /usr/local/bin указывающие на команды, хранящиеся в каталоге приложения.

Вот выдержка из одного из моих собственных /usr/local/bin каталогов, на самом деле содержит более 30 записей. Вы можете видеть, что инструменты VMware хранятся в отдельном каталоге, но символически привязаны к /usr/local/bin . Другие инструменты хранятся в самой папке.

 $ ls -l /usr/local/bin total 804 -rwxr-xr-x 1 root staff 6717 Feb 4 2014 ad-search -rwxr-xr-x 1 root staff 4811 Feb 2 2011 cpd -rwxr-xr-x 1 root staff 798 Aug 13 2013 echoel -rwxr-xr-x 1 root staff 294 Jun 18 2007 ifvi ... lrwxrwxrwx 1 root staff 45 Feb 6 2014 vmware-gksu -> /usr/local/lib/vmware-tools/bin64/vmware-gksu lrwxrwxrwx 1 root staff 43 Feb 6 2014 vmware-hgfsclient -> /usr/local/lib/vmware-tools/bin64/appLoader lrwxrwxrwx 1 root staff 43 Feb 6 2014 vmware-toolbox-cmd -> /usr/local/lib/vmware-tools/bin64/appLoader -rwxr-xr-x 1 root staff 256307 Feb 6 2014 vmware-uninstall-tools.pl 
  • команда ps не дает вывод в домашнем каталоге
  • Измените каталог по умолчанию для одной конкретной программы, не изменяя ее путь
  • Что вы делаете, когда пытаетесь сделать sudo и PATH корня ушли в kerblooey?
  • Сценарий Bash для вывода пути на флеш-накопитель USB
  • Переменная среды PATH в linux
  • изменить путь по всему миру
  • Есть ли способ добавить каталог в мой PATH в zsh, только если он еще не присутствует?
  • Как преобразовать относительный к абсолютному пути, портативно и надежно?
  • GIT на «горном льве» не будет выполнять команды
  • Добавлен каталог bin на мой путь, не может выполнять команды в нем с помощью команды sudo,
  • Невозможно изменить JAVA_HOME
  • Interesting Posts

    Встроенная программа Linux для комментариев

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

    результат фильтрации команды ls для получения только определенных имен файлов на основе формата

    Когда вы используете ssh на сервере, вы используете настройки сервера или свои собственные настройки?

    MPD-ошибка MPC, тайм-аут после остановки, очистка списка воспроизведения, загрузка и воспроизведение снова

    автоматический пароль без пароля ssh при входе / перезапуске

    Могу ли я ограничить sudoer nopasswd каталогом?

    Не удается найти файл, записанный с помощью Gnome Sound Recorder

    Лицензируется лицензия Red Hat Linux

    Что такое сообщение из памяти: жертвовать ребенком?

    Создание загрузочной установки Linux USB без unetbootin

    Как установить Apache Tomcat 8 на centos 7?

    Обновления статуса twitter из командной строки (через cURL)

    Вход SSH с четким текстовым паролем в качестве параметра?

    Печать (сохранение) последней команды ввода bash

    Linux и Unix - лучшая ОС в мире.