¿Cómo obtener qué PATH está disponible para una aplicación GUI?

3

Necesito comprender qué versión de sqlite3 utiliza una aplicación GUI.

Tengo varias versiones instaladas en mi máquina y quiero saber cuál está disponible para la aplicación GUI de MacOS. Debe haber un lugar que defina un PATH para las aplicaciones GUI.

¿Cómo puedo saber? ¿Cómo puedo modificarlo?

    
pregunta coolnodje 08.04.2018 - 14:37

1 respuesta

6

Suponiendo que SQLite está vinculado dinámicamente a la aplicación en ejecución, puede encontrar la variable de entorno PATH usando el comando ps .

También puede utilizar Monitor de actividad para ver los Archivos y puertos abiertos de la aplicación. Luego puede buscar en la salida para ver si la biblioteca se mantiene abierta por el proceso.

Ruta - Use ps

PATH es parte de las variables de entorno de un proceso. Si puedes verlos, encontrarás PATH .

Use la herramienta ps con las marcas -wwwE en macOS para ver las variables de entorno pasadas a un proceso:

ps -p <PID> -wwwE

Consulte ¿Variables de entorno de un proceso en ejecución en Unix?

Ejemplo

A continuación se muestra un ejemplo de resultado de la ejecución de este comando en la aplicación gráfica de Mac Xcode:

ps -p 1648 -wwwE

  PID TTY           TIME CMD
 1648 ??         0:03.46 /Applications/Xcode.app/Contents/MacOS/Xcode TMPDIR=/var/folders/b2/[redacted]n/T/ __CF_USER_TEXT_ENCODING=0x1F5:0x0:0x2 HOME=[redacted] SHELL=/bin/bash Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.[redacted]/Render SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.[redacted]/Listeners PATH=/usr/bin:/bin:/usr/sbin:/sbin LOGNAME=[redacted] DISPLAY=/private/tmp/com.apple.launchd.[redacted]/org.macosforge.xquartz:0 XPC_SERVICE_NAME=com.apple.dt.Xcode.64852 MallocNanoZone=0 USER=[redacted] XPC_FLAGS=0x1

Como Mark menciona en un comentario a continuación, es posible que esto no muestre la biblioteca vinculada.

Información de la biblioteca vinculada: use otool

Como otra alternativa, intente otool para extraer el marco vinculado y la información de la biblioteca. El comando para ejecutar es:

otool -L <path to binary>

Usando Xcode.app como ejemplo, el comando y la salida son:

$ otool -L /Applications/Xcode.app/Contents/MacOS/Xcode 
/Applications/Xcode.app/Contents/MacOS/Xcode:
    /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 22.0.0)
    @rpath/DVTFoundation.framework/Versions/A/DVTFoundation (compatibility version 1.0.0, current version 1.0.0)
    @rpath/DVTKit.framework/Versions/A/DVTKit (compatibility version 1.0.0, current version 1.0.0)
    @rpath/IDEFoundation.framework/Versions/A/IDEFoundation (compatibility version 1.0.0, current version 14154.0.0)
    @rpath/IDEKit.framework/Versions/A/IDEKit (compatibility version 1.0.0, current version 14154.0.0)
    /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1452.20.0)
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.50.4)
    /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1561.40.104)
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1452.20.0)
    @rpath/libswiftAVFoundation.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftCore.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftCoreAudio.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftCoreFoundation.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftCoreGraphics.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftCoreImage.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftCoreMedia.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftDarwin.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftDispatch.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftFoundation.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftIOKit.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftMetal.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftObjectiveC.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftQuartzCore.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftXPC.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftsimd.dylib (compatibility version 1.0.0, current version 902.0.48)

Volver a vincular

No es recomendable volver a vincular un binario, pero parece posible. Vea Cómo copiar (y volver a vincular) los binarios en OSX usando otool e install_name_tool para obtener instrucciones detalladas.

    
respondido por el Graham Miln 08.04.2018 - 16:01

Lea otras preguntas en las etiquetas