IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes POSIX Discussion :

D'ou le shell charge ses variables ? [OS X]


Sujet :

Shell et commandes POSIX

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 84
    Points : 69
    Points
    69
    Par défaut D'ou le shell charge ses variables ?
    Bonjour,

    Je m'intéresse au fonctionnement des différents shell cependant je rencontre des problèmes de compréhensions sur certains points. Les questions ci-dessous concerne principalement le shell tcsh.
    • Quelle est la différence entre les commandes setenv et env ? De mon coté le rendu est le même mise à part l'ordre d'affichage des lignes.
    • Lors de l'execution de la commande set le shell présente des variables associer à leur valeur, cependant d'ou proviennent-elles ? A ma connaissance lors de l'execution du shell de connexion les fichier /etc/csh.* sont chargés puis si présent, les fichier dans le $HOME le sont également.
    • Enfin dernière question concernant naturellement le shell mais qui s'éloigne un peu plus vers la programmation systèmes ( langage C ), les fonctions setenv, unsetenv, env ont-elle un rapport direct avec ces même builtins que nous propose le shell ?


    Merci.

  2. #2
    Expert éminent sénior
    Avatar de Escapetiger
    Homme Profil pro
    Administrateur système Unix - Linux
    Inscrit en
    Juillet 2012
    Messages
    1 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur système Unix - Linux

    Informations forums :
    Inscription : Juillet 2012
    Messages : 1 476
    Points : 11 051
    Points
    11 051
    Par défaut
    Bonjour,

    Citation Envoyé par sbill Voir le message
    Je m'intéresse au fonctionnement des différents shell cependant je rencontre des problèmes de compréhensions sur certains points. Les questions ci-dessous concerne principalement le shell tcsh.

    Citation Envoyé par sbill Voir le message
    Quelle est la différence entre les commandes setenv et env ? De mon coté le rendu est le même mise à part l'ordre d'affichage des lignes.
    setenv sert pour le shell en cours et tous les sous-shell, env pour le shell en cours uniquement.
    cf. TCSH / CSH: set vs setenv Command Differences


    Citation Envoyé par sbill Voir le message
    Lors de l'execution de la commande set le shell présente des variables associer à leur valeur, cependant d'ou proviennent-elles ? A ma connaissance lors de l'execution du shell de connexion les fichier /etc/csh.* sont chargés puis si présent, les fichier dans le $HOME le sont également.
    Plus précisement, les fichiers suivants :
    /etc/csh.cshrc, /etc/csh.login, ~/.tcshrc, ~/.cshrc, ~/.history, ~/.login, ~/.cshdirs
    Source :
    http://en.wikipedia.org/wiki/Compari...command_shells
    Comparison of command shells, colonne Startup/shutdown scripts

    et variables selon l'implémentation de tcsh, voir la partie Files ici pour les détails (ceux concernant NeXTs, cf. http://fr.wikipedia.org/wiki/NeXTSTEP, Mac OS X)


    Citation Envoyé par sbill Voir le message
    Enfin dernière question concernant naturellement le shell mais qui s'éloigne un peu plus vers la programmation systèmes ( langage C ), les fonctions setenv, unsetenv, env ont-elle un rapport direct avec ces même builtins que nous propose le shell ?
    Les commandes setenv et unsetenv sont effectivement builtins, env ne l'est pas.
    Source :
    http://docstore.mik.ua/orelly/linux/lnut/ch08_09.htm
    Built-in csh and tcsh Commands (Linux in a Nutshell, 3rd Edition)

    Nota: je ne sais pas si OS X implémente actuellement des spécificités particulières pour tcsh

    [Edit]
    https://developer.apple.com/library/...n1/tcsh.1.html
    tcsh(1) Mac OS X Manual Page Mac OS X version 10.9
    Startup and shutdown
    A login shell begins by executing commands from the system files /etc/csh.cshrc and /etc/csh.login.
    It then executes commands from files in the user's home directory: first ~/.tcshrc (+) or, if
    ~/.tcshrc is not found, ~/.cshrc, then ~/.history (or the value of the histfile shell variable), then
    ~/.login, and finally ~/.cshdirs (or the value of the dirsfile shell variable) (+). The shell may
    read /etc/csh.login before instead of after /etc/csh.cshrc, and ~/.login before instead of after
    ~/.tcshrc or ~/.cshrc and ~/.history, if so compiled; see the version shell variable. (+)

    Non-login shells read only /etc/csh.cshrc and ~/.tcshrc or ~/.cshrc on startup.

    Builtin and non-builtin command execution
    Builtin commands are executed within the shell. If any component of a pipeline except the last is a
    builtin command, the pipeline is executed in a subshell.

    Parenthesized commands are always executed in a subshell.

    (cd; pwd); pwd

    thus prints the home directory, leaving you where you were (printing this after the home directory),
    while

    cd; pwd

    leaves you in the home directory. Parenthesized commands are most often used to prevent cd from
    affecting the current shell.

    When a command to be executed is found not to be a builtin command the shell attempts to execute the
    command via execve(2).
    [...]
    builtins (+)
    Prints the names of all builtin commands.
    setenv [name [value]]
    Without arguments, prints the names and values of all environment variables. Given name,
    sets the environment variable name to value or, without value, to the null string.
    tcsh (+)
    The version number of the shell in the format `R.VV.PP', where `R' is the major release num-ber, number,
    ber, `VV' the current version and `PP' the patchlevel.
    version (+)
    The version ID stamp. It contains the shell's version number (see tcsh), origin, release
    date, vendor, operating system and machine (see VENDOR, OSTYPE and MACHTYPE) and a comma-sep-arated comma-separated
    arated list of options which were set at compile time. Options which are set by default in
    the distribution are noted.
    VERSION
    This manual documents tcsh 6.17.00 (Astron) 2009-07-10.
    « Developpez.com est un groupe international de bénévoles dont la motivation est l'entraide au sens large » (incl. forums developpez.net)
    Club des professionnels en informatique

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Corriger ses variables globales
    Par Xavier1979 dans le forum Langage
    Réponses: 3
    Dernier message: 29/09/2007, 01h25
  2. [Système] Protéger ses variables lors d'un "include"
    Par vraipolite dans le forum Langage
    Réponses: 3
    Dernier message: 17/07/2007, 10h33
  3. Shell - Affectation de variable
    Par ljoly dans le forum Linux
    Réponses: 6
    Dernier message: 02/06/2006, 14h49
  4. Shell - Récupérer une variable dans un autre fichier
    Par claralavraie dans le forum Linux
    Réponses: 9
    Dernier message: 11/01/2006, 16h25
  5. Réponses: 2
    Dernier message: 20/12/2005, 16h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo