热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

不要让Unix中的环境变量坐冷板凳

文章标题:不要让Unix中的环境变量坐冷板凳。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

    环境变量在Unix操作系统中的地位不用笔者多说,大家都知道。但是在Unix操作系统中,有几个环境变量经常被人所忽视。笔者有时候跟一些经验比较丰富的系统工程师交流时,他们也不知道有这个环境变量。笔者今天就给大家介绍一下这些被忽视的环境变量,以及其应用。帮助大家扫扫认识的盲区。

  一、防止文件被意外覆盖。

  在Unix操作系统中,有一个很特殊的符号,叫做重定向符。通过这个符号,可以把一些屏幕的显示的结果或者其他内容重定向到一个文件中。显然这个重定向符号很受系统工程师的欢迎。如利用这个符号可以轻易的把当前目录下所有的文件名字保存到一个文件中。但是,这个符号也有一个缺陷。如某个文件已经存在,现在系统工程师再利用重定向符号创建同名的文件时,原来的文件就会在没有任何提示的情况下被覆盖掉。显然如果在操作时一不小心,就会带来不可挽回的损失。有时候,为了避免这种情况,我们系统工程师在使用重定向符号创建文件的时候,还不得不先查看一下当前目录下是否存在这个文件。

  为此,有时候我们希望在使用重定向符号创建文件时,默认情况下是不覆盖文件的。如果当目标文件已经存在的话,则系统会提示错误信息。除非用户在重定向符号命令中,利用参数指定让系统覆盖原有的文件。这个需求能够实现吗?答案当然是肯定的。这就需要用到一个被大家所忽略的环境变量noclobber参数。

  如我们需要实现上面这个需求的话,则可以进行如下设置。Set ?o noclobber。这个命令的意思就是对文件采取了一种保护措施。当重定向需要建立的目标文件已经存在时,系统会提示错误信息(文件已经存在),并拒绝建立这个文件。如此的话,目标文件就不会被意外覆盖掉。不过有时会系统工程师可能知道目标文件的存在。如查看进程时,前后两次执行相同的命令。此时系统工程师就希望重定向符号覆盖原有的文件。此时,系统工程师也不需要去取消这个保护措施。而只需要在重定向符号后面加入一个|参数。如ls *.jpg >| image.txt即可。这个命令的含义是显示当前目录下所有的JPG文件,并把其文件名字保存到image.txt文件中。如果目标文件已经存在的话,就覆盖它。

  显然这个noclobber环境变量参数提供了一种文件被意外的保护机制。如果Unix操作系统用作服务器或者开发的目的,则笔者建议启用这个环境变量参数。因为在这些应用场合,重定向符号用的特别多。有时候可能目标文件已经存在,但是可能由于疏忽而导致文件被意外覆盖,那时系统工程师再后悔也没有用了。所以,此时启用这个参数的话,就可以最大限度的降低由此带来的损失。为此笔者建议在这些场合中,最好能够启用这个被人遗忘在角落的环境变量,以提高文件的安全性。

  二、~的替换作用。

  ~在Unix操作系统中叫做代字符。这也是一个在Unxi操作系统中被忽视但是却很有作用的一个环境变量符号。简单的来说,这个代字符可以用来表示主目录。如现在在Unix操作系统上新建了一个用户Jussin,并为其安装了一个邮件客户端。默认情况下这个邮件是保存在其用户的主目录下(如果在安装的过程中没有改变安装路径)。此时在特权用户下,系统工程师需要马上切换到这个用户的主目录下,进行邮件的维护。此时,如果没有这个~代字符的帮助,那么系统工程师不得不先确认这个用户的主目录,然后再利用cd命令一层层的进去。显然这个操作会比较麻烦。其实,在Unix操作系统中,有一种更加简便的方法。如只需要在命令行中输入,cd ~jussin,系统就会自动登录到这个用户的主目录。所以说,我们把这个代字符用来表示用户的主目录。这笔刚才介绍的传统操作要简便许多。

  当~符号后面不加用户名,而直接加/符号后者不加任何内容的话,表示当前用户的主目录。如系统工程师往往需要修改用户的配置文件,以达到某些目的。此时系统工程师需要使用vi命令来编辑这个配置文件,如vi $HOME/.profile。这个命令的含义就是打开当前用户主目录下面的.profile配置文件。在输入这个命令的时候,HOME必须大写,以为其代表的是环境变量。在输入这个命令的时候,比较麻烦。一是需要使用$这个特殊符号,二是需要转换大小写模式。因为vi命令必须为小写,而HOME环境变量必须为大写。所以在输入的时候有些不方便。其实此时系统工程师也可以利用~这个代字符来简化输入。如在这个代字符的帮助下,上面这个命令就可以简化为vi ~/.profile即可。这可以就可以免除大小写转换的麻烦。

  另外,我们还可以利用~代字符快速切换到当前用户的主目录。如cd ~就表示切换到当前用户的主目录。这使用起来非常的方便。另外,使用系统工程师还可以使用cd ~-命令,切换到最近一次进入的目录中。也就是说,采用以上这两个命令,可以快速的在最近使用的目录与当前用户主目录之间进行切换。这对于日常的维护工作是非常方便的。有时候系统工程师在开发一些嵌入式程序的时候,也经常需要用到这两个命令。因为其可以非常方便的实现在用户主目录与当前目录之间的切换。所以说,这个~代字符其大部分系统工程师所忽视,其作用仍然不可小瞧。不过其有一个缺点,就是通用性不是很好。据笔者所知,并不是在所有的shell 中都支持这个代字符。如在Bourne shell中,就不支持这个代字符。如使用vi ~/.profile命令,会提示错误信息。所以这是这个代字符最大的缺陷。系统工程师在使用过程中,需要注意这个通用性的问题。如果不考虑这个问题的话,那么这个代字符真的是一个很不错的环境变量。

  三、历史变量的大小。

  在shell中,我们按方向键,可以显示最近几次执行过的命令。有时候,我们需要重复执行某条命令进行测试,如果这个命令比较长的话,那么历史命令就会非常的有用。系统工程师只需要简单的利用方向键找到先前执行过的命令,然后按回车键即可。如系统工程师可能编写了一个文件备份的脚本程序。在编写过程中,需要不断的执行这个脚本程序以完善其功能。此时利用历史命令功能就可以免除每次输入命令的烦恼。

  通常情况下,这个执行过的命令是保存在硬盘或者内存中的。随着内存与硬盘价格的下降,系统工程师往往会在Unix服务器上配备比较大的硬盘与内存。为此系统工程师可以把这个历史纪录的文件设置为大一点,让其保存更多的历史命令。如系统工程师可以更改HISTSIZE这个环境变量,这个环境变量用来显示内存中的历史纪录长度。而更改HISTFILESIZE这个环境变量,则可以修改保存在硬盘中的历史纪录文件的大小。

  通常情况下,笔者建议大家修改这个两个环境变量。因为其不但可以简化系统工程师的输入,而且还可以通过查看历史纪录来查询以前对操作系统所进行的维护操作。这对于排除操作系统故障具有一定的意义。如果有必要的话,系统工程师还可以根据需要指定历史纪录保存的位置。如可以设置HISTFILE环境变量,来决定在硬盘上保存的历史纪录文件的位置与文件名。如果没有设置这个环境变量的话,则默认情况下历史纪录文件是保存在用户的主目录下的。也就是说,每个用户都有自己的历史纪录文件。在每个用户的shell中执行的命令,都纪录在各自的历史纪录文件中,彼此之间是不通用的。

  这几个环境变量虽然只用来实现一些特定的功能,但是其作用仍然是不可忽视的。合力设置这些环境变量,不仅可以提高文件的安全性,而且还可以在很大程度上方便我们的操作。为此笔者建议,如要再让这些环境变量坐冷板凳了,应该尽量发挥这些环境变量的价值。让我们的工作更加的轻松。

 


推荐阅读
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了新款奇骏的两个让人上瘾的功能,分别是智能互联系统和BOSE音响。通过对新款奇骏的配置和功能进行评测,探讨了这两个新增功能的使用体验和优势。此外,还介绍了新款奇骏的其他配置和改进,如增加的座椅和驾驶辅助系统,以及内饰的舒适性提升。对于喜欢音响的消费者来说,BOSE音响的升级也是一个亮点。最后,文章提到了BOSE音响的数字还原能力,以及7座版无法配备BOSE音响的原因。 ... [详细]
  • 本文介绍了adg架构设置在企业数据治理中的应用。随着信息技术的发展,企业IT系统的快速发展使得数据成为企业业务增长的新动力,但同时也带来了数据冗余、数据难发现、效率低下、资源消耗等问题。本文讨论了企业面临的几类尖锐问题,并提出了解决方案,包括确保库表结构与系统测试版本一致、避免数据冗余、快速定位问题等。此外,本文还探讨了adg架构在大版本升级、上云服务和微服务治理方面的应用。通过本文的介绍,读者可以了解到adg架构设置的重要性及其在企业数据治理中的应用。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • 信息安全等级保护是指对国家秘密信息、法人和其他组织及公民的专有信息以及公开信息和存储、传输、处理这些信息的信息系统分等级实行安全保护,对信息系统中使用的信息安全产品实 ... [详细]
  • 无线认证设置故障排除方法及注意事项
    本文介绍了解决无线认证设置故障的方法和注意事项,包括检查无线路由器工作状态、关闭手机休眠状态下的网络设置、重启路由器、更改认证类型、恢复出厂设置和手机网络设置等。通过这些方法,可以解决无线认证设置可能出现的问题,确保无线网络正常连接和上网。同时,还提供了一些注意事项,以便用户在进行无线认证设置时能够正确操作。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文详细介绍了相机防抖的设置方法和使用技巧,包括索尼防抖设置、VR和Stabilizer档位的选择、机身菜单设置等。同时解释了相机防抖的原理,包括电子防抖和光学防抖的区别,以及它们对画质细节的影响。此外,还提到了一些运动相机的防抖方法,如大疆的Osmo Action的Rock Steady技术。通过本文,你将更好地理解相机防抖的重要性和使用技巧,提高拍摄体验。 ... [详细]
  • 本文详细介绍了华为4GLTE路由器B310的外置天线安装和设置方法。通过连接电源和网线,输入路由器的IP并登陆设置页面,选择手动设置和手动因特网设置,输入ISP提供商的用户名和密码,并设置MTU值。同时,还介绍了无线加密的设置方法。最后,将外网线连在路由器的WAN口即可使用。 ... [详细]
author-avatar
2的4次方根God
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有