¿Cómo puedo hacer que mi propio shell creado funcione con archivos .sh? Linux, bash, shell, unix

Mi maestra nos dio esta tarea para crear nuestro propio caparazón. Se supone que nuestro caparazón se llama rshell y se supone que funciona como el caparazón normal.

Creé mi propio shell usando C ++. Si escribe un comando como ls en mi shell creado le da una lista al igual que cómo si escribió ls en el caparazón normal.

El problema que estoy enfrentando es cómo obtengo el .sh archivos o archivos de script para trabajar con mi shell creado. Me di cuenta cuando corro un .sh archivo usando mi caparazón no ejecuta el .sh archivo a través de mi caparazón. Lo ejecuta a través del shell normal. ¿Cómo hago .sh archivos corren a través de mi caparazón?

Respuestas

5 para la respuesta № 1

Cambia la línea hash-bang de los guiones para apuntar a tu caparazón. Por ejemplo,

#!/usr/local/bin/rshell

O donde sea que esté el ejecutable de tu shell.


4 para la respuesta № 2

Como John ya dijo, cambia el shebang para que apunte a tu caparazón. El núcleo invocará el comando en el shebang con el archivo mismo como argumento. Para demostrar, prueba un archivo con un shebang de #!/bin/cat.

#!/bin/cat
hello world

Se comporta prácticamente igual que si escribieras /bin/cat /path/to/file.

El shebang no tiene capacidades de búsqueda de PATH, por lo que #!yourshell no funcionaría como un shebang Sin embargo, puedes usar env hacer la búsqueda PATH como en #!/usr/bin/env yourshell. (Este enfoque es preferido para comandos que están en diferentes rutas en diferentes sistemas, como python).


Menú