Quiero automatizar algo escribiendo guiones simples iniciando consecutivamente unos guiones uno tras otro. Y luego establecer algunos alias en el shell superior.
Problema: algunos de estos comandos lanzan un nuevo shell. Y todos los comandos después de eso se inician en el shell anterior. ¿Hay alguna forma de poner en cola estos comandos después de aquel en el shell "superior"?
Ejemplo simple:
#!/usr/bin/ksh
#normally this ksh is executed deep inside other script i cannot modify
ksh
echo test
¿Hay alguna forma de imprimir "prueba" en el shell recién iniciado por el comando ksh? Normalmente, la prueba se imprime en el shell anterior: queda disponible después del comando "salir" Gracias por cualquier ayuda.
shell
automation
shell-script
solaris
ksh
Aleksander Fular
fuente
fuente

Respuestas:
Cuatro alternativas, pero cada una de ellas tiene un inconveniente:
Asegúrese de que los comandos que desea ejecutar en el archivo ksh estén escritos en el archivo
mycmdse iniciar el ksh en la siguiente forma:Retirarse: Se pierden las funciones de edición de línea de comandos de ksh.
Asegúrese de que los comandos que desea ejecutar en el archivo ksh estén escritos en el archivo
/tmp/mycmds$$; establecer la variable de entornoMYCMDSa/tmp/mycmds$$antes de empezarksh -l; y agrega lo siguiente a tu$HOME/.profile:Retirarse: Todo aquel que usa este programa tiene que modificar su
$HOME/.profile.Organice todo de tal manera que los comandos que desea ejecutar se escriban en un archivo
mycmdsque luego se obtiene a través de. mycmdsen el inicial cáscara. Poner todo eso en una definición de función.Retirarse : En lugar de iniciar un nuevo shell, modifica el entorno y / o las definiciones de alias del inicial. Todos los que usan este programa tienen que usar ksh.
Asegúrese de que los comandos que desea ejecutar están escritos en el archivo
mycmdsy comienza un golpetazo en la siguiente forma:Retirarse: Obtienes un golpe en lugar de un ksh.
fuente
-io-l, un ksh que se lee de una canalización no es interactivo (man ksh), lo que significa en particular que no hay aviso.cat mycmds /dev/ttyson inútiles Originalmente, tenía dos órdenes aquí; después de eliminar uno de ellos también debería haber eliminado los paréntesis.-i, y la versión sin esta opción tampoco funciona bien. Iría para el método 2 o 4 (2 es esencialmente una emulación de la bash--init-fileopción.)