2017-04-12 150 views
0

在下面的例子中,env变量是如何工作在bash上的,在下面的例子中,我想删除一个我以前已经设置过的linux目录,但是因为我没有设置变量,该操作将在每件事上执行,我想要一些帮助来了解它是如何工作的?以及我如何避免这种情况?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

相关:[检查在Unix shellcript中设置环境变量的简明方法](http://stackoverflow.com/questions/307503/whats-a-concise-way-to-check-that-environment-变量 - 在设置功能于UNIX的shellsc)。如果你想要总是检查未设置的变量,你可以输入'set -u'。 –

+0

'set -u'将始终检查未设置的变量。如果你只需要检查这两个变量,你可以使用'rm -rf $ {I_HOME:?请设置值}/$ {I_VERSION:?它又是什么版本} /'。 – alvits

+0

请看看:[当某人回答我的问题时该怎么办?](http://stackoverflow.com/help/someone-answers) – Cyrus

回答

0

因为你还没有设置变量,他们是默认值“”所以你的说法就变成了:

sudo rm -rf // 

,当你这样说:

SOMEVAR="someValue" 

它创建和设置当前bash进程的env变量。 设置变量bash所创建的,你可以这样写的所有进程:

export SOMEVAR="someValue" 

,你也可以通过添加此行到你的.bashrc文件中的变量添加到所有未来的bash进程。