热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

unix中挖掘环境变量背后的价值

文章标题:unix中挖掘环境变量背后的价值。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

    环境变量可以作用于用户的整个工作环境。同时相关的应用程序也需要利用这些环境变量来获取进程运行的环境变量。不如邮件监测程序,默认情况下会没隔一段时间去查看一下是否有新的邮件。要实现这个功能的话这个邮件监测程序必须要知道邮件存储的位置与监测的频率。这两样东西就是通过Unix系统的环境变量来实现的。不过在实际工作中,不少Unix系统工程师忽视了环境变量的作用。或者说,没有把环境变量背后的价值挖掘出来。笔者这篇文章或许能够给广大Unix系统爱好者一点启示。

  一、提示符的作用。

  在谈提示符的价值之前,笔者先给大家看一下dos下提示符的显示格式。如下图所示,是微软XP操作系统下DOS版本的截图。


    
    从这个截图中大家可以看出,DOS下的提示符是比较直观的。先是盘符,然后是当前的绝对路径,然后以>符号结尾。但是在Unix系统中却不是如此。在Unix系统下,其路径不是决定路径,而只是显示当前目录的名称。这就给平时的维护造成了一定的困难。那么在Unix系统下能否按DOS下的提示符格式来显示呢?即显示当前的绝对路径。要实现这个功能,就需要从Unix的提示符说起了。

  提示符信息也是Unix操作系统中的环境变量。在shell环境中有两个提示符,分别为PS1与PS2。其中PS1为主提示字符串,即大家平常所看到的那个提示符(可能是一个美元符号$或者一个#字号)。通常情况下,如果当前用户是特权用户,则其主提示符可能为#;如果当前用户为普通用户,则其主提示符就为$符号。另外在shell进程中,还可以运行多条命令。此时系统会显示>提示符,这个提示符就是次级提示符,保存在PS2环境变量中。那么如何通过这个提示符来实现如上的需求呢?且听笔者慢慢道来。

  1、首先需要显示的就是不管是主提示符还是次级提示符,都以>结束。此时系统工程师可以通过改变主提示符的值来实现。如可以通过$PS1=”>”命令来实现。这个命令的作用就是改变这个环境变量的值。另外有些人可能还喜欢在前面加入c:盘符,此时就可以把主提示符PS1的值设置为”c:>”。不过需要注意的是,Unix的文件系统跟微软的文件系统不一样。在Unix操作系统中,其只有一个跟目录,即一个树状结构;而在Windows操作系统中,每个分区都有一个根目录,都有一个独立的树状结构。故在Unix操作系统中没有C、D、E盘的区分。

  2、其次是要实现在提示符中显示绝对路径。此时需要PWD环境变量的帮助。在Linux系统中,pwd命令可以用来显示当前的绝对路径。不过在Unix操作系统中的BASH中(shell的一种),专门提供了一个PWD环境变量。这个环境变量主要用来存储当前光标所在的绝对路径。PWD是一个动态的环境变量。当用户每次切换目录时,这个环境变量都将被重新赋值。如果要在提示符中显示当前的绝对路径,那么只需要把这个变量赋于给主提示符PS1即可。由于PWD变量动态改变的特性,此时主提示符也会随着PWD环境变量(绝对路径)的改变而改变。具体的赋值命令为:$PS1=’ $PWD’。这里笔者要强调一个小细节。当把一个环境变量赋值给另外一个环境变量时,则需要加入$符号。否则的话,Unix操作系统会把这个变量当作一个普通的字符串来对待。笔者在给学员进行培训时,这是他们经常犯的错误。这注意是因为他们可能受到以前经验的影响。因为在一些开发环境中编程的时候,在把某个变量的值赋值给其他变量时,不需要在变量前加入$等类似的特殊符号。但是这里需要注意,在Unix操作系统中如果把某个环境变量的值赋值给另外一个环境变量,必须要用$符号来标示,否则的话系统会把这个环境变量名字当作普通的字符来处理。

  提示符除了可以模拟实现DOS提示符显示格式之外,还有其他一些重要的作用。如大部分系统工程师在管理Unix服务器的时候,不会直接通过Unix终端控制台来进行。而是利用ssh等远程连接协议进行远程登陆,进行远程维护。如果企业中Unix服务器比较多的话,系统工程师就可能会比较麻烦。因为在默认情况下,利用ssh协议远程登陆到Unix操作系统,在终端上不会显示Unix主机的名字。为此如果系统工程师在同一时刻连接了多台Unix服务器的话,则其就不能够一目了然的知道到底是哪台Unix服务器。在这种情况下,系统工程师就希望在提示符中能够显示Unix主机的名字。在bash环境中,有一个转义字符可以实现类似的需求。\h这个转义字符就是用来显示当前主机的名字。为此如果系统工程师需要提示符中显示主机的名字,则可以通过如下的命令来实现,$PS1=”\h”。如此设置后,在Unix操作系统提示符中就会显示当前主机的名字。这方面在Linux系统上就做的比较好,其默认情况下就会显示主机的名字。

[1] [2] 下一页


推荐阅读
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  •     这里使用自己编译的hadoop-2.7.0版本部署在windows上,记得几年前,部署hadoop需要借助于cygwin,还需要开启ssh服务,最近发现,原来不需要借助cy ... [详细]
  • 大坑|左上角_pycharm连接服务器同步写代码(图文详细过程)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了pycharm连接服务器同步写代码(图文详细过程)相关的知识,希望对你有一定的参考价值。pycharm连接服务 ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 本文总结了Linux下多线程执行shell脚本的4种方法,包括切换到工作目录执行、使用绝对路径执行、直接使用bash或sh执行。同时介绍了为什么需要加上"./"来执行脚本的原因。 ... [详细]
author-avatar
浪漫的白狼族
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有