巧设HOME变量提高效率Linux认证考试

文章作者 100test 发表时间 2009:07:25 09:34:02
来源 100Test.Com百考试题网


  如果用户一登陆Unix操作系统,系统就会自动定位到合适的目录。这无疑可以提高系统工程师的工作效率。在Unix操作系统中,用户的默认目录是由 HOME环境变量所设置的。笔者这次就给大家介绍一下这个HOME变量的奥秘。跟大家讨论讨论如何通过巧设HOME变量来提高办公效率。
  一、默认的HOME变量值。
  默认情况下,用户的主目录是系统工程师在创建用户帐号的时候所自动创建的。一般情况下,在操作系统的/home目录下,会有各个用户名命名的子目录。如有一个用户名字为admin,则在这个/home目录下就会有一个/home/admin子目录。这就是用户的默认目录。当这个admin用户登录到操作系统的时候,如果是在文字模式下登录,则系统会将用户当前的位置自动指向到这个文件夹。也就是说,用户的默认主目录是在建立帐号的时候自动创建的。但是,这个默认的设置并不一定能够满足系统工程师或者用户的需求。如一个数据库管理员,其数据库相关的文件(包括安装程序)可能都是在目录/db下面。为此数据库管理员用户可能希望其一登陆到系统后,就自动定位到这个/db目录下/,而不是/home/db下。不然的话还需要手工进行目录切换,反而更加的麻烦。此时就涉及到更改系统的默认设置问题。
  二、更改HOME变量值来调整默认目录。
  在Unix操作系统中这个用户的默认目录其实是由环境变量$HOME设置的。通过命令echo $HOME(注意系统环境变量一般都为大写)可以查看这个环境变量的当前值。如果没有更改默认设置,那么用户的默认主目录总是在/home目录下。不过系统工程师可以根据需要来调整这个变量,从而达到调整用户默认目录的目的。要实现这个需求,必须了解如下内容。
  首先需要了解HOME变量的存储结构。根据echo命令可以显示环境变量HOME的值,其一般的格式为/home/用户名。从这个格式中可以看出,HOME命令存储的是一个绝对路径。在Unix系统中绝对路径是一串目录的序列。在各个目录中是采用/符号进行分割的(注意,这个跟Windows操作系统不同)。在这个目录序列中,第一个/符号表示根目录,后面几个/符号主要用来起到分割目录的作用。为此如果要重新定义这个HOME变量,也需要遵循这个规则,即要采用绝对路径,而不能够采用相对路径。
  其次需要注意HOME变量中的目录序列其大小写是敏感的。如环境变量HOME是大写的,而在目录序列中/home目录是小写的。如果两个倒过来的话,就可能会出现一些莫名其妙的问题。系统工程师需要牢记一点,在Unix操作系统中,大小写一般都是敏感的。所以将一个绝对目录赋值给HOME变量的时候,需要注意大小写要跟实际的目录名字相同。一般情况下,最好先使用cd命令从根目录开始定位到目标目录中,然后通过复制、粘贴等操作将目录序列赋值给 HOME环境变量。这可以提高准确率。设置完以后,在使用cd $HOME命令来测试一下,这个环境变量设置是否准确。
  第三需要注意的是,一般主目录的路径名都是保存在/etc/passwd中的。系统工程师也可以修改这个文件来实现更改用户主目录的目的。查看这个文件,系统管理员会发现有一条类似/home/用户名的信息。这个信息就是环境变量HOME的值。将这个绝对路径更改为用户想要定位的默认目录,就可以实现调整默认目录的目的。不过需要注意的是,这调整目录的时,目标目录必须存在。否则的话,会出现一些意想不到的后果。
  可见调整用户的默认目录并没有太大的难度。不过系统工程师需要注意的是在调整这个目录的时候一定要细心。笔者在日常工作中,发现很多系统工程师在调整这个默认目录的时候,由于绝对路径输入错误,如多了一个空格或者大小写输错了,从而导致登录错误。为此,在设置好之后,系统工程师最好能够进行测试,看看所做的调整是否生效。一般最常见的错误就是大小写有问题。另外就是利用了相对路径,而不是绝对路径。第三是目标目录用户可能没有对应的权限。最后就是在设置HOME环境变量的时候,没有将调整后的值保存在配置文件中。下次重新登录后这个设置就失效了。这些常见的问题,只要用户够细心,一般都可以避免。
  三、如何快速定位到主目录。
  将某个特定的目录定义为用户的主目录,其主要是出于两个目的。一是在系统登录的时候,能够自动定位到用户的主目录。其次就是可以使用HOME变量快速回到用户的主目录中。如现在系统工程师已经在目录/mnt/share/ses/wesd/wwew/dda/ewa下。而系统工程师帐户的主目录在/oracle/admin下面。此时系统工程师该如何从当前的目录返回到这个/home/admin目录下呢?
  如果不把这个目录设置为用户主目录的话,那么此时系统工程师或者用户只能够通过cd /home/admin目录来完成。命令输入起来有点麻烦。由于在Unix操作系统下,目录的大小写是敏感的。为此如果在目录名字是大小写混用的,那么在输入过程中还有进行大小写转换,显然非常的麻烦。即使可以通过命令补写功能,来简化输入,但是操作起来仍然比较麻烦。
  此时如果将这个目录设置为用户的主目录,那么会有什么改善呢?如当用户在系统的任何目录下,使用cd $HOME(注意系统环境变量都是为大写)命令,会发生什么现象呢?此时系统会自动定位到用户的主目录。其实,这里$HOME变量的值就等于/home /admin,即其就是用户主目录的一个绝对路径。为此可以通过cd $HOME命令迅速定位到用户的主目录中。显然这比输入一长串的主目录路径要方便的多。如现在用户需要访问主目录下的一个setup.sh脚本文件,也只需要使用vi $HOME/setup.sh即可。这大大方便了用户主目录下文件到访问,提高了工作的效率。
  除了可以通过HOME环境变量迅速定位用户主目录外,还可以通过一些特殊的符号来定位用户的主目录。如在大部分的Unix操作系统版本中,都可以利用~符号来表示用户的主目录。也就是说,用户执行cd $HOME命令与执行cd ~命令的效果相同。通过cd ~命令也可以迅速定位到用户的主目录。不过后面这个命令比cd $HOME功能更加的强大一点。如利用后面这个命令,不仅可以定位到当前用户的主目录,还可以定位到其他用户的主目录。如通过cd ~用户名的形式,可以快速定位到任何一个用户的主目录。而如果通过HOME环境变量来快速切换到主目录的话,只能够切换到当前用户的主目录。如现在系统工程师以特权用户root登录到系统中。现在起需要查看某个用户如admin主目录下的文件。其不需要先查看admin帐户的HOME变量来确定这个用户的主目录所在。而是直接使用~admin的形式,就可以直接进入到帐户admin的主目录中。可见,只要系统工程师灵活使用HOME 环境变量与~符号,就可以很方便的在当前目录与用户主目录之间进行切换,从而提高工作效率。
  不过在这个切换的时候,仍然受到权限的限制。如现在用户admin想使用cd ~sales命令切换到用户sales的主目录下。这个操作并不一定会成功。主要看用户admin是否有用户sales主目录的访问权限。如果有的话,会顺利切换到另外一个用户的主目录中。如果没有的话,则系统会提示错误信息,并且仍然停留在当前的目录。所以即使使用以上这些方法来进行用户主目录的快速切换,仍然不能过越过权限控制这道坎。为此其系统能够文件的安全性仍然是有保障的。不会因此而发生一些越权访问的事件。最后笔者再啰嗦一句,就是需要注意HOME环境变量与路径的大小写。无论采用哪一种方式进入目录,都需要注意大小写是敏感的。一般情况下,系统的环境变量都是大写。故在引用系统环境变量来进入目录时,环境变量的名字也是大写的。

相关文章


linux命令实践sortLinux认证考试
开源安全技术的四大好处Linux认证考试
Linux内核启动:BIOS启动阶段Linux认证考试
基于Linux文本模式的网页编辑器BluefishLinux认证考试
巧设HOME变量提高效率Linux认证考试
LinuxKernel2.6.30.2Linux认证考试
打造Linux下超级安全的LAMP服务器Linux认证考试
linux操作系统修改共享内存的简单方法Linux认证考试
VPATH与vpath的区别与应用Linux认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛