Comment définir les répertoires Home et Path dans C?

Je programme un petit shell Unix écrit en c. Je veux qu’il ne fasse que quelques commandes de base pour le moment. par exemple, ls, pwd, ch

Mon problème est de savoir comment définir le répertoire de base et le répertoire de chemin d’access. Je veux lire la configuration à partir d’un fichier texte pour pouvoir la modifier facilement à tout moment.

Je vais utiliser execv () pour appeler les fonctions unix telles que ls. Par exemple, PATH doit déterminer les répertoires que mon shell doit utiliser pour rechercher des programmes exécutables lorsque l’utilisateur tape une commande.

Merci

Ce sont simplement des variables d’environnement que vous manipulez, par exemple via setenv(3) (exécutez man 3 setenv pour plus de détails). Les variables sont HOME et PATH . Voir aussi man 7 environ .

Notez que la définition / la modification d’une variable d’environnement n’influence que le processus en cours et tous les processus qui en découlent après le réglage / la modification (contrairement à Windows, AFAIK).

Découvrez la fonction setenv . Voir man 3 setenv pour plus d’informations.

Unix vous offre déjà une variable d’environnement contenant tous les chemins d’access aux fichiers exécutables du système. Récupère la variable dans ton code avec getenv("PATH"); Chaque chemin est séparé par un ‘:’, il vous suffit donc de numériser et de rechercher ces chemins pour le fichier exécutable que votre commande veut exécuter. Dans cette fonction, vous devriez également pouvoir rechercher n’importe quel chemin de votre choix pour un exécutable.

Vous pouvez décider dans quel répertoire vous voulez démarrer (“répertoire personnel” comme vous le dites) en manipulant le répertoire de travail actuel avant que le shell n’intervienne avec chdir() . Vous pouvez également utiliser cette fonction Unix pour implémenter une commande cd qui peut être utilisée tout au long de l’exécution du shell.

Espérons que cela aide un peu.