56 votes

Quelle est la différence entre "env" et "set" (sur Mac OS X ou Linux) ?

J'obtiens des résultats similaires en exécutant "env" et "set". L'ensemble donne plus de résultats - est-ce un sur-ensemble d'env ?

La page de manuel de set ne donne aucune information. Comment fonctionnent ces commandes et quelle est la différence ?

6voto

tim Points 51

Si vous souhaitez limiter la sortie de la commande set aux variables uniquement, vous pouvez l'exécuter en mode POSIX :

 type -a env set
help set
(set -o posix; set) | nl

Si vous avez besoin d'un contrôle plus précis sur la liste de variables spécifiques, vous pouvez utiliser des fonctions intégrées de Bash telles que declare ou compgen , ou d'autres astuces de Bash.

 man bash | less -p '-A action$'  # info on complete & compgen

# listing names of variables
compgen -A variable | nl       # list names of all shell variables
echo ${!P*}                    # list names of all variables beginning with P

compgen -A export | nl         # list names of exported shell variables
export | nl                    # same, plus always OLDPWD
declare -px | nl               # same

declare -pr                    # list readonly variables

# listing names of functions           
compgen -A function | nl
declare -F | nl
declare -Fx | nl

# show code of specified function
myfunc() { echo 'Hello, world!'; return 0; }
declare -f myfunc  

5voto

Stephen P Points 5521

set est un shell intégré, tandis que env est un programme (/usr/bin/env)

set fait plusieurs choses, mais en lui-même, il répertorie les variables d'environnement. Il peut également régler/basculer des commutateurs, tels que set +x ou set -v etc.

env répertorie à lui seul les variables d'environnement exportées , mais peut exécuter un programme dans un environnement modifié

Voir man 1 env pour plus d'informations.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X