Использовать альтернативы или добавить в 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 
  • Добавление путей к PATH с использованием многострочного синтаксиса
  • Добавить PATH в .bashrc
  • Установленный sqlite3 v3.8, но Mac-терминал по-прежнему запускает старую версию 3.6 по умолчанию
  • Как преобразовать относительный к абсолютному пути, портативно и надежно?
  • Что такое PATH на Mac OS?
  • Как поиск в $ PATH работает под капотом?
  • Где Debian 8.1 устанавливает adduser?
  • если в переменной PATH существует 2 команды с одинаковым именем файла, которые будут выполнены?
  • Linux / bash не выполняет исполняемый файл, который «который» говорит мне
  • исполняемый файл в $ PATH, все еще не распознанный
  • Nginx wordpress и неправильный путь
  • Interesting Posts

    Как использовать grep для поиска строк, начинающихся с определенного символа в bash

    Nslookup: команда не найдена ошибка в RHEL / CentOS 7

    Загрузка Android с lilo на ПК

    Поиск дистрибутива Linux в i686 UEFI

    ssh-agent не запускается на рабочем столе OpenSuSE

    Каковы основные отличия между основными ракетами NIX?

    Как использовать grep для поиска текстовой строки в файлах в подпапках родительской папки без ключа -r

    Kali Linux – Crunch – как поместить символ @ в созданный список

    Новые версии Mozilla (Iceweasel / Icedove) не работают при использовании пересылки X

    Почему yum продолжает жаловаться на отсутствующую зависимость, которая уже установлена?

    Какие форматы файлов поддерживает CUPS?

    Тестирование, если дескриптор файла действителен

    Любая лучшая альтернатива chroot на OpenVZ VPS?

    Имитировать тайм-аут запроса PostgreSQL

    Отображать строку в текстовом файле, если переменная соответствует части в строке?

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