博客
关于我
linux的shell命令的工作方式,Linux Shell命令的常用方法
阅读量:796 次
发布时间:2023-02-04

本文共 1710 字,大约阅读时间需要 5 分钟。

Shell的基础解析

当你打开Linux系统的终端并启动Shell时,你看到的是一个复杂但精密的系统。Shell不仅仅是一个简单的命令行界面,它实际上是一个功能强大的工具,能够处理复杂的任务和配置。为了让你更好地理解Shell的工作原理,我们将从基础开始,逐步深入。

Shell的定义与运行

Shell是一个命令行界面,用于与操作系统交互。你在终端中输入命令,Shell解释并执行这些命令。默认情况下,Linux系统使用/bin/bash作为Shell解释器。每次打开终端,Shell都会启动一个新的进程来处理输入命令。

父Shell与子Shell的关系

当你在Shell中运行脚本时,会发生进程的分叉。具体来说:

  • 父Shell:初始启动的Shell进程。
  • 子Shell:当父Shell运行脚本时,会fork出一个新的进程来执行脚本。这个新进程称为子Shell。
  • 这种关系使得父Shell和子Shell能够独立运行,子Shell在执行完脚本后会返回到父Shell。理解这一点非常重要,因为它影响到变量的传递和管理。

    Shell变量的分类

    在Shell中,变量可以分为以下几类:

  • 内部变量:这些变量是Shell内部定义的,供Shell使用。例如:

    • $#:命令行参数的个数。
    • $0:当前程序的名称。
    • $?:前一个命令或函数的返回码。
    • $$:当前程序的进程ID(PID)。
  • 环境变量:这些变量是系统定义的,可以被所有Shell继承。例如:

    • PATH:Shell搜索命令的路径。
    • SHELL:当前用户使用的Shell类型。
    • HOME:用户的主目录。
    • PS1:命令行提示符。
  • 用户变量(本地变量):这些变量是用户定义的,仅在当前Shell中生效。可以使用set命令显示这些变量。

  • 配置文件的作用

    Shell的行为和环境由一系列配置文件决定。这些文件通常位于以下位置:

  • /etc/profile:系统级配置文件,用于设置环境变量。
  • /etc/profile.d/*:系统级脚本配置文件。
  • ~/.bash_profile~/.bash_login~/.profile:用户级配置文件,按顺序读取。
  • ~/.bashrc:用户自定义配置文件。
  • /etc/bashrc:为每个bash Shell用户运行的脚本。
  • 这些配置文件决定了Shell中的变量和环境设置。如果你需要定制Shell行为,可以在这些文件中添加自定义脚本。

    在父Shell与子Shell之间传递变量

    在父Shell定义的变量在子Shell中是否可用?答案是:

    • 环境变量:可以在子Shell中访问。
    • 用户变量:不可以在子Shell中访问。

    例如:

    父Shell定义变量:str='Hello World'在父Shell运行脚本:#!/bin/bashecho $str  # 输出空值,说明用户变量不可传递

    要让用户变量在子Shell中可用,可以使用export命令将其转换为环境变量。

    使用export命令

    export命令用于将用户变量转换为环境变量,从而使其在子Shell中可用。例如:

    export str='Hello World'

    这样,子Shell运行脚本时就能访问$str

    父Shell与子Shell变量的独立性

    需要注意的是,父Shell和子Shell是独立进程,彼此不会互相影响。即使在子Shell中修改了变量,父Shell中的变量也不会受到影响。

    让父Shell访问子Shell中的变量

    如果你需要在父Shell中访问子Shell中的变量,可以通过以下方法:

  • 临时文件方法:在子Shell中定义变量,并将其写入一个临时文件:

    str='Hello World' > $TMPFILE

    然后在父Shell中读取这个文件:

    cat $TMPFILE
  • 使用管道:将子Shell的输出通过管道传递给父Shell处理。

  • 这种方法虽然可行,但在实际应用中不常使用。

    总结

    通过理解Shell的结构和变量管理,你可以更好地利用Shell进行日常工作和脚本编写。掌握这些知识,对你深入学习Linux系统具有重要意义。希望这篇文章能为你提供清晰的理解和实用的指导。

    转载地址:http://epkfk.baihongyu.com/

    你可能感兴趣的文章
    linux工作中遇到的问题总结---更新中
    查看>>
    Linux工作目录切换命令
    查看>>
    Linux工作笔记022---查看Centos 内核版本号
    查看>>
    Linux工作笔记023---Centos7 查看系统安装了什么软件_多少软件
    查看>>
    Linux工作笔记024---Centos7 下查看本机公网IP
    查看>>
    Linux工作笔记025---CentOS7.3安装Nginx
    查看>>
    Linux工作笔记027---Centos7.3 查看tomcat所占用的端口号
    查看>>
    Linux工作笔记029---Centos7.3 服务器下查看tomcat服务是否启动,重启,查看错误日志等基本操作
    查看>>
    Linux工作笔记031---Centos7.3下安装tomcat
    查看>>
    Linux工作笔记032---Centos7.3/8.2 下安装mysql_不局限于MySql版本
    查看>>
    Linux工作笔记033---Linux(CentOS7)安装zip、unzip命令
    查看>>
    Linux工作笔记034---linux tail命令详解_linux在vi中查找字符串
    查看>>
    Linux工作笔记035---linux内网测试访问外网网速_外网测试访问内网网速
    查看>>
    Linux工作笔记035---设置连接Linux Centos 超时连接时间_空闲的等待时间 -bash: TMOUT: readonly variable
    查看>>
    Linux工作笔记036---Centos下查看cpu、磁盘、内存使用情况以及如何清理内存
    查看>>
    Linux工作笔记037---Centos8.2下安装mysql_测试通过_注意这里安装8.0.22版本的_8.0以后的版本有需要注意的地方_跟7.0之前的版本不一样
    查看>>
    Linux工作笔记037---Centos下Linux创建用户_用户组_删除用户
    查看>>
    Linux工作笔记038---CentOS8.2安装Nginx_测试通过
    查看>>
    Linux工作笔记038---Centos下Linux下解决root用户Operation not permitted
    查看>>
    Linux工作笔记040---Centos8.2安装mysql5.7.18_已经测试成功
    查看>>