¿Cómo saber la ruta de un software en particular?


13

Contexto: estoy tratando de hacer que una aplicación se inicie automáticamente cuando inicio sesión. Para esto necesito seleccionar el pathpara la aplicación.

ingrese la descripción de la imagen aquí

Aquí están los caminos que ya miré:

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

Si esto puede ayudar, la aplicación que estoy tratando de encontrar se llama " ScreenCloud " y la descargué del Centro de software de Ubuntu.

Pero no puedo encontrarlo, ¿hay alguna forma de saber dónde está instalado un software en particular? Porque incluso si encontrara para este, me gustaría evitar tener el mismo problema en el futuro.


2
¿No funciona si solo escribe screencloud en la línea de comando?
Graham

¿Lo obtuvo de la tienda de instantáneas o del centro de software de Ubuntu porque no puedo encontrarlo en ninguno de los repositorios aptos de Ubuntu?
mchid

2
@mchid No estaba abordando el enlace de OP sino más bien su comentario: "porque no puedo encontrarlo en ninguno de los repositorios aptos de Ubuntu" Screencloud se puede instalar desde el .debpaquete, pero debe agregar PPA.
WinEunuuchs2Unix

1
@mchid Sabía que el comando había cambiado de screencloud.sha screencloudy sospechaba que se había eliminado /opt. Esa parte de mi respuesta fue señalar cómo typey whichno encontraría screencloudpero lo locateharía.
WinEunuuchs2Unix

1
@ WinEunuuchs2Unix Justo en. screencloud.shen realidad todavía existe, pero no estoy seguro de cómo difiere de screencloudotra cosa que no sea el hecho de que el .sharchivo es un script y screencloudno lo es. Realmente no estoy familiarizado con esta aplicación. Debajo /usr/bin/hay un screencloud, un screencloud.sh, y también un screencloud-seguido por el número de versión, más o menos como gimpes.
mchid

Respuestas:


16

Encuentra la ruta de un ejecutable

Mejor manera

  • type executable

Consulte esta pregunta para obtener más información sobre cómo typees mejor. (Gracias, comentarios!)

Otras maneras

  • whereis executable
  • which executable

Esos comandos solo buscan en la variable PATH ( echo $PATH), por lo que no son válidos en algunos casos (funciones incorporadas, alias o funciones bash, y más).


3
Increíblemente, esto todavía no era una pregunta sobre ask ubuntu. buena pregunta @Ced!
tatsu

De hecho, ¡casi no puedo creerlo!
Biggybi

1
Me enteré de otra pregunta que typese prefiere, whichya que es un shell incorporado y puede determinar si un comando es un alias. ¡Eso también era nuevo para mí!
Arronical

1
Vea aquí una explicación (larga) de por qué typese prefiere: ¿Por qué no usar "which"? ¿Qué usar entonces?
terdon

1
@mchid se aplican todos los puntos en la respuesta. Incluyendo la sección "Casos de uso" que señala que de whichhecho es útil en el contexto específico de los scripts de shell. Fuera de ese contexto, sin embargo, typecasi siempre es la mejor opción.
terdon

1

Encuentra la ubicación del comando dentro o fuera de la ruta

Suponga que desea encontrar la ubicación de unameun programa que enumera la información del sistema. Si desea saber en qué directorio está almacenado el comando de nivel superior, tiene varias opciones:

$ 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

Localizar ventajas

La última opción locatedevuelve todos los archivos que contienen unameno solo el programa que se ejecuta desde el símbolo del sistema.

La ventaja locatees que encontrará comandos que no están en su ruta de búsqueda. type -a(preferido sobre simple type) y whichsolo encontrará comandos en su ruta de búsqueda. Para ver su ruta de búsqueda use echo $PATH.

Tome por ejemplo esta respuesta en ¿Cómo iniciar screencloud? :

Tratar...

/opt/screencloud/screencloud.sh

El locate screencloudcomando encontrar, pero which screencloudy type -a screencloudno lo hará porque:

  • El nombre completo es screencloud.shy solo el locatecomando busca en la coincidencia parcial.
  • /opt/screencloudprobablemente no está en la ruta de búsqueda. whichy typesolo busca archivos ejecutables en la ruta de búsqueda.

Nota: esta es una respuesta anterior. Se llama a ScreenCloud moderno con screencloud.

La ventaja de Locate sobre el findcomando es que puede ser cientos o incluso miles de veces más rápido. También ejecutar a findpartir de /dará muchos errores de permisos con los que no experimentará locate.

Localizar desventajas

Si acaba de instalar el programa hoy, deberá usarlo sudo updatedbpara actualizar la base de datos de localizar.


1

Use el siguiente comando para enumerar todos sus $PATHdirectorios:

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

Use el siguiente comando para encontrar la ruta completa para screencloud:

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

Si usó apt, apt-geto el Centro de software de Ubuntu para instalar el paquete, puede usar el siguiente comando para encontrar la ruta completa:

dpkg -L screencloud | grep bin

Suponiendo que use este repositorio , debe ser capaz de encontrar screencloud en /usr/bin/.

El camino completo es:

/usr/bin/screencloud

o

/usr/bin/screencloud-*

Sin embargo, si utilizó la tienda de Snapcraft de acuerdo con el enlace que proporcionó en su pregunta, la ruta estaría en el siguiente directorio:

/snap/bin

más información

Además, recuerde que Ubuntu distingue entre mayúsculas y minúsculas, por lo que debe utilizar todo en minúsculas sin mayúsculas.


Gracias por esta respuesta muy detallada, ganó un voto a favor :)
Ced

1
¡Estaba efectivamente debajo /snap/bin!
Ced
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.