¿Cómo configurar los directorios de inicio y ruta en C?

Estoy programando un pequeño shell de Unix escrito en c. Quiero que haga solo algunos comandos básicos por ahora. por ejemplo, ls, pwd, ch

Mi problema es ¿cómo configuro el directorio de inicio y el directorio de ruta? Quiero leer la configuración de un archivo de texto para que pueda cambiarse fácilmente en cualquier momento.

Voy a usar execv () para llamar a funciones de Unix como ls. Por ejemplo, PATH debe determinar los directorios que mi shell debe usar para buscar programas ejecutables cuando el usuario escribe un comando.

Muchas Gracias

preguntado el 08 de noviembre de 11 a las 14:11

¿Puede ser más explícito en lo que quiere establecer? Qué hacer ¿Quiere decir "directorio de inicio"? Qué hacer ¿Quiere decir "directorio de ruta"? El primero tiene un significado común, se establece en el archivo de configuración /etc/passwdy leer por rutinas como getpwnam(). Este último no tiene un significado común que yo sepa. -

3 Respuestas

Todas son simplemente variables de entorno que manipula, por ejemplo, a través de setenv(3) (correr man 3 setenv para detalles). Las variables son HOME y PATH. Véase también man 7 environ.

Tenga en cuenta que configurar / cambiar una variable de entorno solo influye en el corriente proceso y todos los procesos bifurcados de él después de el ajuste / cambio (a diferencia de Windows, AFAIK).

respondido 08 nov., 11:18

Mira la función setenv. Ver man 3 setenv para obtener información al respecto.

respondido 08 nov., 11:18

Unix ya le ofrece una variable de entorno que contiene todas las rutas donde se almacenan los ejecutables del sistema. Recupere la variable en su código con getenv("PATH"); Cada ruta está separada con un ':' por lo que todo lo que necesita hacer es tokenizar y comenzar a buscar esas rutas para el ejecutable que su comando quiere ejecutar. En esta función también debería poder buscar cualquier ruta de su elección para un ejecutable.

Puede decidir en qué directorio desea comenzar ("directorio de inicio" como dice) manipulando el directorio de trabajo actual antes de que el shell le solicite chdir(). También puede utilizar esa función de Unix para implementar un cd comando que se puede utilizar durante todo el tiempo de ejecución del shell.

respondido 19 nov., 19:00

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.