2017-04-12 1 views
0

Comment fonctionnent les variables d'environnement sur bash lorsqu'elles ne sont pas définies, dans l'exemple ci-dessous, je voulais supprimer un répertoire Linux que je pensais avoir déjà défini mais parce que je n'ai pas défini les variables, l'opération va être exécutée sur tout, je voudrais de l'aide pour comprendre comment ça marche? et comment je peux éviter cela?Comportement des variables d'environnement Linux

 [email protected]:~$ sudo rm -rf $I_HOME/$I_VERSION/ 
    rm: it is dangerous to operate recursively on ‘//’ (same as ‘/’) 
    rm: use --no-preserve-root to override this failsafe 
+1

En relation: [Quel est un moyen concis de vérifier que les variables d'environnement sont définies dans Unix shellscript] (http://stackoverflow.com/questions/307503/whats-a-concise-way-to-check-that-environment- variables-sont-set-dans-unix-shellsc). Vous pouvez simplement taper 'set -u' si vous voulez qu'il vérifie toujours les vars unset. –

+0

'set -u' vérifie toujours les variables non définies. Si vous avez seulement besoin de ces 2 variables, vous pouvez utiliser 'rm -rf $ {I_HOME:? Veuillez définir la valeur}/$ {I_VERSION:? Quelle est la version?} /'. – alvits

+0

S'il vous plaît jeter un oeil à: [Que dois-je faire quand quelqu'un répond à ma question?] (Http://stackoverflow.com/help/someone-answers) – Cyrus

Répondre

0

que vous n'avez pas défini les variables qu'ils sont la valeur par défaut est '' de sorte que votre déclaration devient:

sudo rm -rf // 

quand vous dites ceci:

SOMEVAR="someValue" 

il crée et ensembles la variable d'environnement pour le processus bash en cours. pour définir la variable pour tous les processus créés par bash vous pouvez écrire ceci:

export SOMEVAR="someValue" 

vous pouvez également ajouter la variable à tous les processus futurs de bash en ajoutant cette ligne à votre fichier .bashrc.