В дополнение к ответу, данному Руи Ф. Рибейро выше, я хотел бы внести update-alternatives
в таблицу. Очень удобно управлять переключением между различными двоичными файлами, доступными для одной и той же программы.
Во-первых, проверьте, является ли установленный двоичный файл фактическим двоичным файлом в /usr/bin
или просто символической ссылкой. Это можно сделать с помощью ls -la
, например:
$ ls -la $(which 7z)
# If it is a binary, it will look like this:
-rwxr-xr-x 1 root root 39 Aug 15 2016 /usr/bin/7z
# If a symlink, something like this:
lrwxrwxrwx 1 root root 20 Apr 9 12:58 /usr/bin/7z -> /some/another/path/7z
Если вы нашли двоичный файл, переместите его из текущего местоположения с помощью команды dpkg-divert
:
$ sudo dpkg-divert --divert /usr/bin/7z.dist --rename /usr/bin/7z
Теперь вы можете использовать менеджер альтернатив. Команда имеет следующий формат:
$ sudo update-alternatives --install <link> <name> <path> <priority>
Добавить оба двоичных файла в группу альтернатив 7z
:
$ sudo update-alternatives --install /usr/bin/7z 7z /usr/bin/7z.dist 10
$ sudo update-alternatives --install /usr/bin/7z 7z /usr/local/share/PeaZip/res/7z/7z 20
Будет создана символическая ссылка по адресу /usr/bin/7z
, указывающая на двоичный файл с наивысшим приоритетом в списке. Если по какой-либо причине вам нужно переключиться между двоичными файлами, просто сделайте это:
$ sudo update-alternatives --config 7z
Интерактивная подсказка спросит вас, какой двоичный файл использовать:
There are 2 choices for the alternative 7z (providing /usr/bin/7z).
Selection Path Priority Status
-------------------------------------------------------------------------
* 0 /usr/local/share/PeaZip/res/7z/7z 20 auto mode
1 /usr/bin/7z.dist 10 manual mode
2 /usr/local/share/PeaZip/res/7z/7z 20 manual mode
Press <enter> to keep the current choice[*], or type selection number:
Введите нужный номер Selection
и нажмите клавишу ввода. Сделанный! Преимущество этого подхода в том, что он применяет -ко всей системе и немедленно, включая все открытые сеансы оболочки. Нет необходимости манипулировать PATH
,также упрощается возврат к исходному бинарному файлу, когда вам это нужно.
Похоже, у вас есть каталог с именем -
, который ls
пытается разобрать как последовательность опций (или переключателей ):
$ mkdir -- -
$ ls -d */
ls: unknown option -- /
$ -ls -d -- */
-/
Многие базовые инструменты используют специальный переключатель --
, что означает «Больше никаких переключателей; все, что дальше, является обычным аргументом».
Остерегайтесь использования подстановочных знаков:
$ touch -- foo -i
$ ls
-i foo
$ ls *
2251799814054385 foo
Только представьте себе хаос, который может возникнуть, если вы используете rm
и в вашем текущем рабочем каталоге есть файл с именем -fr
.