¿Simula el entorno de shell disponible para las aplicaciones GUI?

Estoy probando algunos scripts que están destinados a usarse dentro de varias aplicaciones GUI, ya sea como llamadas de shell directas o como parte de una do shell scriptllamada de AppleScript. Sé por experiencia que el shell que obtiene una aplicación no se parece en nada a lo que obtengo de forma predeterminada al iniciar Terminal, por lo que me gustaría encontrar una manera de simular el shell que obtiene una aplicación para poder depurar los scripts sabiendo que se están comportando como debo esperar que se comporten en su entorno de uso final esperado.

Entonces, ¿cómo abro una Terminal (o modifico una que ya está abierta) para que se comporte como el shell al que tiene acceso una aplicación GUI?

Respuestas (1)

Primero, permítanme resolver el problema de una aplicación GUI que no proporciona el mismo entorno que una sesión de terminal para un script bash.

Las diferencias se deben a su perfil de bash, por lo que puede tener exactamente lo mismo en un script de shell de GUI usando el sourcecomando. Coloque la línea source /Users/<username>/.bash_profile(reemplazando <username>con su nombre corto) en la parte superior de su secuencia de comandos bash y tendrá el mismo entorno en la secuencia de comandos cuando se ejecute dentro de una aplicación GUI como en su sesión de shell.

Para obtener un shell sin ejecutar su perfil en iTerm2 (no pude hacerlo funcionar en Terrminal):

  • Abrir a Terminal->Preferencias
  • Ir al panel Perfiles
  • Duplica tu perfil predeterminado
  • En general"
  • Cambie el nombre del nuevo perfil a "Sin perfil"
  • Establezca la tecla de método abreviado en Control-Comando-A
  • Haga clic en "Comando"
  • Establezca el comando en/bin/bash -norc
  • Cierra las Preferencias

Ahora Control-Command-A abrirá una sesión exactamente igual a como lo haría una aplicación GUI: todo configurado de forma bashpredeterminada.

El abastecimiento en el perfil no resuelve todos los problemas. Las aplicaciones GUI, por ejemplo, no leen modificaciones a PATH de /etc/paths.d/la forma en que lo hace Terminal. Creo que también podría haber otros problemas con las variables de entorno, pero aún no he podido resolverlos. Aún así, investigaré iTerm2 y veré cuánto más me acerca a donde necesito estar.
Las pequeñas diferencias que ha encontrado se deben a que una aplicación GUI no se está ejecutando /etc/profile. El único de importancia es el PATH, disculpas por olvidarlo, puse el mío explícitamente en mi perfil. Los demás son todos terminales y relacionados con terminales. El uso de la solución iTerm2 también soluciona todo eso.