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
mycmds
e 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 entornoMYCMDS
a/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
mycmds
que luego se obtiene a través de. mycmds
en 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
mycmds
y comienza un golpetazo en la siguiente forma:Retirarse: Obtienes un golpe en lugar de un ksh.
fuente
-i
o-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/tty
son 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-file
opción.)