Как знать путь конкретного программного обеспечения?

Контекст: я пытаюсь подать заявку, автоматически запускаются, когда я вхожу в систему. Для этого я должен выбрать path для приложения.

enter image description here

Вот пути, которые я уже изучил:

  • /sbin
  • /usr/sbin
  • /usr/local/bin
  • /usr/share/

Если это может помочь, применение, которое я пытаюсь найти, называют "ScreenCloud", и я загрузил его с Центра программного обеспечения Ubuntu.

Но я не могу найти его, есть ли какой-либо способ, которым я могу знать, где установлен конкретное программное обеспечение? Поскольку, даже если бы я нашел для этого, я хотел бы постараться не иметь ту же проблему в будущем.

13
задан 17 May 2019 в 11:03

3 ответа

Найти путь к исполняемому файлу

Лучший способ

  • type executable

Прочтите этот вопрос , чтобы узнать больше о том, как type лучше. (Спасибо, комментарии!)

Другие способы

  • whereis executable
  • which executable

Эти команды осуществляют поиск только в переменной PATH (echo $PATH), поэтому в некоторых случаях они недопустимы (встроенные функции, псевдонимы или функции bash и т. Д.).

0
ответ дан 17 May 2019 в 11:03

Используйте следующую команду для просмотра списка всех ваших $PATH каталогов:

echo $PATH | sed 's/:/\n/g'

Используйте следующую команду, чтобы найти полный путь для screencloud:

for i in $(echo $PATH | sed 's/:/\n/g'); do find $i/screencloud* 2>@1; done

[ 1118] Если вы использовали apt, apt-get или Ubuntu Software Center для установки пакета, вы можете использовать следующую команду, чтобы найти полный путь:

dpkg -L screencloud | grep bin

Предполагая, что вы использовали этот репозиторий , вы сможете найти screencloud в /usr/bin/.

Полный путь:

/usr/bin/screencloud

или

/usr/bin/screencloud-*
<час>

Однако, если вы использовали магазин Snapcraft в соответствии с Если вы предоставите ссылку в своем вопросе, то путь будет в следующем каталоге:

/snap/bin

Дополнительная информация

Также, пожалуйста, помните, что Ubuntu с учетом регистра, поэтому вы должны использовать все строчные буквы без прописных букв.

0
ответ дан 17 May 2019 в 11:03

Найдите местоположение команды внутри или снаружи пути

Предположите, что Вы хотите найти местоположение 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.

1
ответ дан 17 May 2019 в 11:03

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

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