zoukankan      html  css  js  c++  java
  • Shell入门

    Shell简介

      Shell属于解释型语言,也就是不需要编译器(bash/sh)进行编译便可以执行,只需要解释器进行逐行解析,计算机就能识别。Shell其实就是用C语言写的一个程序,也可以不是C语言写的,但是就不可以调用C语言代码了,在linux中每打开一个终端init进程就会fork()出一个子进程运行一个bash的shell程序,使用PS命令就能看到,如下图所示:

      当我们在终端中输入需要执行的应用程序时,Shell便会帮我们fork()出的一个子进程,使用了exec函数簇来脱离和父进程之间的关系,将可执行程序加载到内存中后,便使用了waitpid()等待应用程序结束,实际上当然是非常的复杂,这里只是简单说明,便于理解,参考文章:https://blog.csdn.net/qq_36643282/article/details/105090027
      这篇文章的博主简单实现了一个shell,相信读完便可以理解Shell究竟是什么了。

    Shell的分类

      使用命令cat /etc/shells便可以查看系统支持哪几种Shell脚本类型,系统上合法的shell脚本都要使用这里Shell解释器进行解释。/etc/passwd中记录什么程序和用户设置它们执行或者登入的时候使用的默认Shell解释器。

      sh:第一个流行的shell,是bash的快捷方式;
      dash:小巧、高效,功能相对少一些;
      bash:大多数Linux版本默认shell,基于GNU的架构下的发展;
      rbash:是bash的一个软链接;
      /sbin/nologin:一个非交互式的Shell解释器。
      Shell执行分为交互式和非交互式,交互式就是在终端上执行,并且等待用户输入命令的。像个人编写的简单脚本的shell,读取存放在文件中的命令,并且执行它们。当用户登入Linux的时候系统会执行一系列的Shell脚本,执行顺序如下:

    /etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile--> ~/.bashrc--> /etc/bashrc
    

      /etc/profile:该文件涉及到系统的环境变量,这个的文件的改变会影响所有用户的环境变量;
      ~/.bash_profile、 ~/.bashrc:这两个文件修改的是当前用户的环境变量,是局部的,修改完后应该用命令source重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录;
       /etc/profile:该文件环境变量的改变对所有用户都有效;
       /etc/profile.d/*.sh:该目录中存放的是一些应用程序所需的启动脚本和命令的一些附加选项。

  • 相关阅读:
    Nginx优化
    FastCGI与PHP
    企业级Nginx服务基础到架构优化详解
    nginx优化的一些建议
    nginx的web缓存服务环境部署记录
    Linux下针对服务器网卡流量和磁盘的监控脚本
    Nginx软件优化
    并不对劲的spoj1811
    并不对劲的后缀自动机
    并不对劲的后缀数组
  • 原文地址:https://www.cnblogs.com/ding-ding-light/p/14305979.html
Copyright © 2011-2022 走看看