首页 > 系统相关 >shell

shell

时间:2024-07-18 19:40:44浏览次数:10  
标签:00 shell study zhangkun sh root

一、shell概述

shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核。

Shell还是一个功能相当强大的编程语言,易编写、易调试、灵活性强。

Linux提供的shell解析器

root@zhangkun:~# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/dash
/usr/bin/dash

 

root@zhangkun:~# echo $SHELL
/bin/bash                  

二、第一个shell脚本

先新建一个sh脚本文件

root@zhangkun:~# mkdir study
root@zhangkun:~/study# touch hello.sh
root@zhangkun:~/study# vi hello.sh

在helloworld.sh中输入如下内容

#!/bin/bash
echo "Hello,world"        

脚本常用的执行方式

1、第一种采用bash或sh+脚本的相对路径或者绝对路径(不用赋予脚本+x权限)

sh+脚本的相对路径

root@zhangkun:~/study# sh hello.sh
Hello,world

sh+脚本的绝对路径

root@zhangkun:~/study# sh /root/study/hello.sh
Hello,world

bash+脚本的相对路径

root@ zhangkun:~/study# bash hello.sh
Hello,world

bash+脚本的绝对路径

root@ zhangkun:~/study# bash /root/study/hello.sh
Hello,world

2、第二种:采用输入脚本的绝对路径和相对路径执行脚本(必须具有可执行权限+x)

1、首先赋予helloworld.sh脚本+x权限

root@zhangkun:~/study# chmod +x hello.sh 

2、./+脚本名

root@zhangkun:~/study# ./hello.sh
Hello,world

3、/+绝对路径

root@ zhangkun:~/study# /root/study/hello.sh
Hello,world

第三种:在脚本的路径前加上”. ”或者source命令

root@zhangkun:~/study# source hello.sh
Hello,world
root@zhangkun:~/study# source /root/study/hello.sh
Hello,world
root@zhangkun:~/study# . hello.sh
Hello,world 

source是shell的内嵌

root@zhangkun:~/study# type source

source is a shell builtin

前两种都是在当前shell中打开一个子shell来执行脚本内容,当脚本内容结束,则子shell关闭,回到父shell中。

第三种,也就是使用在脚本路径前加”.”或者source的方式,可以使脚本内容在当前shell里执行,而无需打开子shell,也就是为什么我们每次修改完/etc/profile文件以后,需要source一下的原因。

三、父子shell

查看bash进程

root@zhangkun:~/study# ps -f
UID PID PPID C STIME TTY TIME CMD root 1623611 1623417 0 Jul16 pts/4 00:00:00 -bash root 2973460 1623611 0 16:18 pts/4 00:00:00 ps -f

在敲一下bash,生成一个bash的子进程

root@ zhangkun:~/study# bash
root@ zhangkun:~/study# ps -f UID PID PPID C STIME TTY TIME CMD root 1623611 1623417 0 Jul16 pts/4 00:00:00 -bash root 2975205 1623611 0 16:19 pts/4 00:00:00 bash root 2975216 2975205 0 16:19 pts/4 00:00:00 ps -f

后面进行的操作是在子shell中进行。

然后执行exit退出子shell

root@zhangkun:~/study# exit
exit
root@zhangkun:~/study# ps -f
UID          PID    PPID  C STIME TTY          TIME CMD
root     1623611 1623417  0 Jul16 pts/4    00:00:00 -bash
root     2979056 1623611  0 16:21 pts/4    00:00:00 ps -f

开子shell和不开子shell的区别在于,环境变量的继承关系,如在子shell中设置的当前变量,父shell中是不可见的。

 

标签:00,shell,study,zhangkun,sh,root
From: https://www.cnblogs.com/longlyseul/p/18310304

相关文章

  • vim网络和安全的操作及shell的使用
    目录vim模式一般模式下的基本操作:一般模式切换到编辑模式:一般模式切换到命令模式:Vim多窗口使用技巧横向切割打开:纵向切割打开:关闭多窗口:窗口的切换:网络:定义:作用:网络的类型:网络状态的查询:netstat常用的端口号:通过网络下载文件wgetvim模式Vim编辑器:vi与vim......
  • 全程电子化升级脚本SHELL
     黑龙江ICPSP_UP.sh#!/bin/bash#定义变量formatted_date=$(date+"%Y%m%d")#获取当前日期,格式为YYYYMMDDtomcat_dir="/opt/tomcat/apache-tomcat-9.0.70_icpsp/"#Tomcat的根目录ftp_dir="${tomcat_dir}sun"#FTP上传文件的目录war_file="ICPSP.......
  • Shell编程速查手册(仅入门)
    一.Shell概述Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。Shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Shell脚本(shellscript),是一种为shell编写的脚本程序......
  • 【攻防技术系列】shellcode免杀
    接上文:【攻防技术系列】shellcode初识二、shellcode简单免杀2.1什么是免杀?免杀技术全称为反杀毒技术(AntiAnti-Virus)简称“免杀“。它指的是一种能使病毒木马免于被杀毒软件查杀的技术。由于免杀技术的涉猎面非常广,包含反汇编、逆向工程、系统漏洞等技术,所以难度很高。2.2......
  • Linux入门---(二)shell命令
    1.1man获得帮助信息help只能查询内嵌命令,外部命令查询格式:命令--help1.2快捷键ctrl+u,清空当前已输入,但未执行的命令1.3文件目录类从根目录/开始的就是绝对路径,从当前文件夹开始的就是相对路径pwd显示当前工作目录的绝对路径ls列出目录的内容(ls-a列出全部文件)cd切......
  • KU链接:如何在Linux作业系统上安装Azure PowerShell
    本文由KU链接вт989点сс原创编译,AzPowerShell模组是汇总模组。安装它会下载正式运作的AzPowerShell模组,并让其Cmdlet可供使用,本文说明如何在Linux上安装AzPowerShell模组。必要条件安装支援的PowerShell第7版或更新版本安装开启终端机或其他壳层主机应......
  • Shell介绍
    Shell是一种命令行界面程序,常用于与操作系统进行交互。它是操作系统的外壳,提供了一种用户使用操作系统功能的方式。Shell可以理解为用户与操作系统之间的接口,用户通过输入命令来告诉操作系统要执行的操作,然后操作系统会执行相应的命令并返回结果给用户。Shell可以执行各种操作......
  • 在 PowerShell 中Get-WmiObject Win32_PhysicalMemory,SMBIOSMemoryType 是一种用于描
    在PowerShell中Get-WmiObjectWin32_PhysicalMemory,SMBIOSMemoryType是一种用于描述系统中物理内存类型的属性。数字26表示特定的内存类型,具体为DDR4内存。每种内存类型在SMBIOS(SystemManagementBIOS)规范中都有一个对应的数字码,用来标识不同类型的内存。以下是一些常见......
  • 【Powershell】超越限制:获取Azure AD登录日志
    你是否正在寻找一种方法来追踪AzureActiveDirectory(AzureAD)中用户的登录活动?如果是的话,查看AzureAD用户登录日志最简单的方法是使用MicrosoftEntra管理中心。打开https://entra.microsoft.com/,然后进入监视和健康状况->登录日志这里查看到的是全部用户的登录日......
  • 【Linux杂货铺】期末总结篇4:shell编程
    ......