Контекст: я пытаюсь заставить приложение автоматически запускаться при входе в систему. Для этого мне нужно выбрать path
для приложения.
Вот пути, которые я уже изучил:
/sbin
/usr/sbin
/usr/local/bin
/usr/share/
Если это может помочь, приложение, которое я пытаюсь найти, называется « ScreenCloud », и я загрузил его из Ubuntu Software Center.
Но я не могу найти его, есть ли способ узнать, где установлено конкретное программное обеспечение? Потому что, даже если я найду этот, я бы хотел избежать такой же проблемы в будущем.
.deb
пакета, но вам нужно добавить PPA.screencloud.sh
на,screencloud
и подозревал, что она была удалена/opt
. В той части моего ответа указывалось, какtype
иwhich
не найти,screencloud
ноlocate
найдет.screencloud.sh
на самом деле все еще существует, но я не уверен, чем он отличается отscreencloud
того, что.sh
файл является сценарием, аscreencloud
не является. Я действительно не знаком с этим приложением. Ниже/usr/bin/
есть ascreencloud
, ascreencloud.sh
, а такжеscreencloud-
сопровождаемый номером версии вроде какgimp
.Ответы:
Найти путь к исполняемому файлу
Лучший способ
type executable
Проверьте этот вопрос, чтобы узнать больше о том, как
type
лучше. (Спасибо, комментарии!)Другие способы
whereis executable
which executable
Эти команды
echo $PATH
выполняют поиск только в переменной PATH ( ), поэтому в некоторых случаях они недопустимы (встроенные функции, псевдонимы или функции bash и т. Д.).источник
type
он предпочтительнееwhich
встроенного в оболочку и может определить, является ли команда псевдонимом. Это было новым для меня тоже!type
предпочтительнее: почему бы не использовать «который»? Что использовать тогда?which
Варианты использования», в котором указано , что это действительно полезно в конкретном контексте сценариев оболочки. Однако вне этого контекстаtype
почти всегда лучший выбор.Найти расположение команды внутри или снаружи пути
Предположим, вы хотите найти местоположение
uname
программы, которая выводит системную информацию. Если вы хотите узнать, в каком каталоге хранится команда верхнего уровня, у вас есть несколько вариантов:Найдите преимущества
Последний параметр
locate
возвращает все файлы, содержащиеuname
не только программу, запускаемую из командной строки.Преимущество в
locate
том, что он найдет команды не в вашем пути поиска.type -a
(предпочтительнее, чем простойtype
), иwhich
вы найдете только команды в вашем пути поиска. Чтобы увидеть ваш путь поиска используйтеecho $PATH
.Возьмите, к примеру, этот ответ в разделе Как запустить screencloud? :
locate screencloud
Команда найдет его , ноwhich screencloud
иtype -a screencloud
не будет , потому что:screencloud.sh
и толькоlocate
команда ищет при частичном совпадении./opt/screencloud
вероятно, не в пути поиска.which
иtype
только искать исполняемые файлы в пути поиска.Примечание: Это старый ответ. Современный ScreenCloud называется с
screencloud
.Преимущество Locate перед
find
командой в том, что она может быть в сотни или даже в тысячи раз быстрее. Также запуск,find
начиная с/
, даст много ошибок разрешения, с которыми вы не столкнетесьlocate
.Найдите недостатки
Если вы только что установили программу сегодня, вам нужно будет использовать ее
sudo updatedb
для обновления базы данных locate.источник
Используйте следующую команду, чтобы получить список всех ваших
$PATH
каталогов:Используйте следующую команду, чтобы найти полный путь для
screencloud
:Если вы использовали
apt
,apt-get
или Ubuntu Software Center для установки пакета, вы можете использовать следующую команду, чтобы найти полный путь:Предполагая, что вы использовали этот репозиторий , вы сможете найти
screencloud
в/usr/bin/
.Полный путь:
или
Однако, если вы воспользовались хранилищем моментальных снимков по ссылке, указанной в вашем вопросе, путь будет находиться в следующем каталоге:
больше информации
Также помните, что в Ubuntu учитывается регистр, поэтому вы должны использовать все строчные буквы без заглавных букв.
источник
/snap/bin
!