¿Cómo ejecuto un archivo de comando (por ejemplo, *.sh) en una utilidad de interacción de shell separada (por ejemplo, iTerm2) en el inicio de sesión de mi usuario?

¿Cómo ejecuto un archivo de comando (por ejemplo, *.sh) en una utilidad de interacción de shell separada (por ejemplo, iTerm2) en el inicio de sesión de mi usuario?

iTerm2 es una utilidad increíble y hace que mi interacción con la línea de comando sea mucho más fácil. Hay muchos comandos de actualización que ejecuto a diario y pensé que sería fantástico si pudieran ejecutarse al iniciar sesión como usuario. Sé que para ejecutar un script en un evento de inicio de sesión de un usuario se debe crear un directorio en /System/Library/StartupItems con el script que se desea ejecutar con el mismo nombre que el directorio (por ejemplo, update_sys/update_sys. sh). Los dos problemas principales que tengo después de esto es que 1) cuando se ejecutan los comandos no hay una ventana de terminal para mostrar ningún resultado, y 2) no sé cómo designar iTerm2 (o cualquier otra utilidad) como la utilidad de terminal principal para ejecutar scripts. Tengo iTerm2 configurado como la utilidad de terminal predeterminada, sin embargo, algunos scripts ejecutados aún se iniciarán en la Terminal.

¡Cualquier ayuda es muy apreciada!

(Si mis ideas sobre cómo agregar comandos a un evento de inicio de sesión de usuario son incorrectas o si hay una manera más fácil de hacerlo, ¡hágamelo saber!)

Respuesta1

Nunca usé iTerm (o Mac OS); pero como iTerm es un emulador de terminal, probablemente no sea adecuado para programar tareas. En los sistemas *nixiod, los scripts de inicio de sesión generalmente se ejecutan desde archivos como ~/.profile, /etc/profiley en archivos específicos del shell como ~/.bashrcy /etc/bash.bashrc. Puede leer sobre ellos en la página del manual de su shell (p. ej.man 1 bash).

Respuesta2

iTerm le permite ejecutar esos scripts de forma interactiva y, a medida que las sesiones interactivas envían resultados a la pantalla, verá los resultados.

Muchos programas también se pueden ejecutar como procesos en segundo plano.

La mejor manera de ver el resultado suele ser agregarlo manualmente a un registro. Si es necesario, utilice declaraciones de eco para mostrar dónde y qué comando se está ejecutando. Para el flujo de salida que proviene del comando integrado.

Creo que lo que probablemente quieras se detalla aquí:https://unix.stackexchange.com/questions/74520/can-i-redirect-output-to-a-log-file-and-background-a-process-at-the-same-time

es decir some_cmd > some_file 2>&1 &, que redirigirá la salida estándar al archivo de registro.

información relacionada