La portée de “setenv” dans csh par Rapport à “l'exportation” dans bash
De ce que j'ai lu, setenv
dans les csh et export
en bash sont équivalentes. Cependant, j'ai trouvé de drôles de questions, tout en travaillant avec les deux.
Quand j'ai ouvert le mastic et de commencer à taper:
setenv TEMP yes
echo $TEMP //this give me "yes"
puis-je aller pour bash et le type
echo $TEMP //this give me "yes" as well
Cependant, si je le fais dans l'ordre inverse, il ne donnera pas les mêmes résultats. Plus précisément, quand je vais à bash premier et le type
export TEMP=no
echo $TEMP //this give me "no"
puis-je revenir à la csh et le type
echo $TEMP //this give me "Undefined Variable"
Ne devrait-il pas me donner "non"? Ai-je raté quelque chose?
Merci!
qu'entendez-vous par "puis-je revenir à csh"? Qu'est-ce exactement avez-vous de type "revenir à csh"?
csh est mon shell de connexion de sorte que lorsque je suis en bash et tapez "exit", il retourne à la csh.
La droite. lorsque vous exportez une variable, il est exporté vers les enfants, mais elle n'est pas exportée vers le parent. Lorsque vous tapez "exit", toutes les variables disparaissent.
si vous vous êtes connecté avec
csh est mon shell de connexion de sorte que lorsque je suis en bash et tapez "exit", il retourne à la csh.
La droite. lorsque vous exportez une variable, il est exporté vers les enfants, mais elle n'est pas exportée vers le parent. Lorsque vous tapez "exit", toutes les variables disparaissent.
si vous vous êtes connecté avec
csh
alors la réponse est évidemment celui du rici a donné. Vous avez dit que vous l'avez fait "dans l'ordre inverse", ce qui implique que vous avez obtenu ce résultat inhabituel à partir d'un csh
de connexion va sh
et puis bash/sh
de connexion va csh
. Vous devriez faire cela plus clair dans votre question.OriginalL'auteur Dao Lam | 2013-06-27
Vous devez vous connecter pour publier un commentaire.
De l'exportation d'une variable signifie qu'une copie de cette variable est placée dans l'environnement d'un enfant nouvellement créé processus. C'est une copie de la variable; si le processus de l'enfant modifie la variable, le parent ne voit pas la modification. En outre, si un enfant exportations d'une variable, il n'est pas visible dans le parent.
De là, deux cas sont asymétriques. Lorsque vous démarrez en csh, exporter une variable, et puis commencer à bash, bash voit le exporté variable. Lorsque vous exportez une nouvelle variable dans bash et la sortie de bash pour revenir à la csh, toutes les variables créées dans le bash session disparaître.
Si vous étiez à exporter une variable bash, puis démarrez un enfant csh (en tapant
csh
), vous pourriez certainement voir le exporté variable.OriginalL'auteur rici