Контекст: я пытаюсь подать заявку, автоматически запускаются, когда я вхожу в систему. Для этого я должен выбрать path
для приложения.
Вот пути, которые я уже изучил:
/sbin
/usr/sbin
/usr/local/bin
/usr/share/
Если это может помочь, применение, которое я пытаюсь найти, называют "ScreenCloud", и я загрузил его с Центра программного обеспечения Ubuntu.
Но я не могу найти его, есть ли какой-либо способ, которым я могу знать, где установлен конкретное программное обеспечение? Поскольку, даже если бы я нашел для этого, я хотел бы постараться не иметь ту же проблему в будущем.
Найти путь к исполняемому файлу
Лучший способ
type executable
Прочтите этот вопрос , чтобы узнать больше о том, как type
лучше. (Спасибо, комментарии!)
Другие способы
whereis executable
which executable
Эти команды осуществляют поиск только в переменной PATH (echo $PATH
), поэтому в некоторых случаях они недопустимы (встроенные функции, псевдонимы или функции bash и т. Д.).
Используйте следующую команду для просмотра списка всех ваших $PATH
каталогов:
echo $PATH | sed 's/:/\n/g'
Используйте следующую команду, чтобы найти полный путь для screencloud
:
for i in $(echo $PATH | sed 's/:/\n/g'); do find $i/screencloud* 2>@1; done
apt
, apt-get
или Ubuntu Software Center для установки пакета, вы можете использовать следующую команду, чтобы найти полный путь:
dpkg -L screencloud | grep bin
Предполагая, что вы использовали этот репозиторий , вы сможете найти screencloud
в /usr/bin/
.
Полный путь:
/usr/bin/screencloud
или
/usr/bin/screencloud-*
<час> Однако, если вы использовали магазин Snapcraft в соответствии с Если вы предоставите ссылку в своем вопросе, то путь будет в следующем каталоге:
/snap/bin
Также, пожалуйста, помните, что Ubuntu с учетом регистра, поэтому вы должны использовать все строчные буквы без прописных букв.
Предположите, что Вы хотите найти местоположение uname
, программа, которая перечисляет информацию о системе. Если Вы хотите знать, какой каталог высокоуровневая команда хранится в Вас, имеют много опций:
$ which uname
/bin/uname
$ type -a uname
uname is /bin/uname
$ command -v uname
/bin/uname
$ locate uname
/bin/uname
(... SNIP dozens of Windows files on C & D ...)
/usr/lib/klibc/bin/uname
/usr/lib/plainbox-provider-resource-generic/bin/uname_resource
/usr/share/man/man1/uname.1.gz
/usr/share/man/man2/oldolduname.2.gz
/usr/share/man/man2/olduname.2.gz
/usr/share/man/man2/uname.2.gz
Последняя опция locate
возвраты все файлы, содержащие uname
не только программа, которая запущена от командной строки.
Преимущество locate
это, найдет команды не в Вашем пути поиска. type -a
(предпочтенный по простому type
) и which
только найдет команды в Вашем пути поиска. Видеть Ваше использование пути поиска echo $PATH
.
Возьмите, например, этот ответ в том, Как запустить screencloud?:
Попробовать...
/opt/screencloud/screencloud.sh
locate screencloud
команда найдет его, но which screencloud
и type -a screencloud
будет не потому что:
screencloud.sh
и только locate
управляйте поисками на частичном соответствии./opt/screencloud
вероятно, не находится в пути поиска. which
и type
только ищите исполняемые файлы в пути поиска.Примечание: Это - более старый ответ. С современным ScreenCloud называют screencloud
.
Преимущество Locate перед find
команда - это, могут быть сотни или даже тысячи времен быстрее. Также выполнение find
запуск с /
даст много ошибок разрешения, с которыми Вы не столкнетесь locate
.
Если Вы просто установили программу сегодня, необходимо будет использовать sudo updatedb
обновить базу данных locate.