Что произойдет, если я установлю два пакета с общей командой оболочки?

Например, gprolog и swi-prolog-nox оба предоставляют prolog. Если я установлю их оба, как я могу выбрать между ними, и что, скажем, bash или sh сделать, если я просто наберу prolog?

3
задан 5 August 2019 в 20:29

1 ответ

Это будет зависеть от того, что устанавливают пакеты. Существует несколько различных возможностей:

  1. Оба пакета устанавливают исполняемый файл на том же каталоге.

    Если оба обеспечивают, например /bin/prolog, затем, какой бы ни пакет был установлен, в последний раз перезапишет тот, установленный прежде, и Вы закончите с одной версией prolog. Это, однако, не очень распространено с тех пор dpkg будет жаловаться на конфликтующие пакеты и отказываться устанавливать, при попытке установить обоих.

  2. Каждый пакет устанавливает исполняемый файл в различном пути.

    Например, один в /bin/prolog и другой в /usr/bin/prolog. Затем какой выполняется, когда Вы работаете prolog будет зависеть, на котором является первым в Вашем ПУТИ. В системах Ubuntu ПУТЬ по умолчанию:

    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
    

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

    type -a prolog
    

    Это распечатает все prolog исполняемые файлы (или функции или псевдонимы) найденный и затем выполненный echo $PATH видеть Ваш ПУТЬ и фигуру, которую назовут первой.

  3. Программы могли бы предоставить Вам a prolog команда путем добавления псевдонима или функции в файлы запуска оболочки.

    В этом случае псевдоним или функция будут всегда выполняться перед любым автономным исполняемым файлом. Таким образом, если у Вас есть псевдоним и a /usr/local/bin/prolog файл, затем prolog будет всегда выполнять псевдоним и никогда файл.

3
ответ дан 1 December 2019 в 16:15

Другие вопросы по тегам:

Похожие вопросы: