Shell是什么?(一)

前言:

命令行和shell这两个概念常常使人困惑,今天我们就来讲讲命令行和shell是什么? 

目录

命令行是什么?

shell是什么?

Linux下常见的shell环境有:

shell脚本(shell script)

1、新建一个shell脚本:

2、运行脚本的两种方式:

补充:在Linux里的PATH是什么?

如何解释:export PATH=/opt/buildroot-2017.08/output/host/usr/bin:$PATH


命令行是什么?

提供用户输入命令的界面,其本身只接受输入,然后把命令传递给命令解释器。后者就是shell

在bash中,命令行以一个美元符号$作为提示符,表示用户可以输入命令。

如果正在以root身份执行命令,那么提示符将会成#,如下所示

注:在bash的美元提示符之前,一般还会有一段信息,包括用户名、主机名和当前目录才完整。

shell是什么?

本质上是一个程序,它在用户操作系统之间提供了一个面向行的可交互接口

Linux下常见的shell环境有

  • Bourne Shell(/usr/bin/sh或/bin/sh)
  • Bourne Again Shell(/bin/bash)
  • C Shell(/usr/bin/csh)
  • K Shell(/usr/bin/ksh)
  • Shell for Root(/sbin/sh)
  • ……

不同的shell提供不尽相同的语法和特性,用户可以使用任何一种shell。本篇文章的所有命令都在bash(Bourne Again Shell(/bin/bash))下测试通过。

 

shell脚本(shell script)

Shell 脚本(shell script),是一种为 shell 编写的脚本程序。shell 和 shell script 是两个不同的概念。

1、新建一个shell脚本:

打开文本编辑器(可以使用 vi/vim 命令来创建文件),新建一个文件 后缀.sh,扩展名并不影响脚本执行,见名知意就好,如果你用 php 写 shell 脚本,扩展名就用 php 好了。

输入一些代码,第一行一般是这样:

#!/bin/bash
echo "Hello World !"

注1:shell程序的第一行总是以#!开头,指定脚本的运行环境/bin/bash即指定bash环境。

注2:echo命令把参数传递给标准输出

注3:shell脚本会忽略空行。用空行分割一个程序中不同的任务代码是一个良好的编程习惯。

注4:以#号开头的行是注释

2、运行脚本的两种方式:

1、作为可执行程序

chmod +x test.sh  #使脚本具有执行权限
./test.sh  #执行脚本

:一定要写成 ./test.sh,而不是 test.sh,运行其它二进制的程序也一样,直接写 test.sh,linux 系统会去 PATH 里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找

2、作为解释器参数

/bin/sh test.sh
/bin/php test.php #如果是php的话

注:这种方式运行的脚本,不需要在第一行指定解释器信息,写了也没用。

补充:在Linux里的PATH是什么?

如何解释:export PATH=/opt/buildroot-2017.08/output/host/usr/bin:$PATH

PATH是系统环境变量——搜索路径,定义了运行命令的查找路径(即告诉shell可以在什么地方找到用户要求执行的程序),我们可以通过export来查看系统环境变量有哪些

有时候我们会在一些配置文件里看到类似的内容,小小的解释一下 

export PATH=/opt/buildroot-2017.08/output/host/usr/bin:$PATH

#$PATH这个可以放在前面,也可以放在后面,下面这样也行

export PATH=$PATH:/opt/buildroot-2017.08/output/host/usr/bin

 这句命令的意思就是,修改PATH的值。

其中export可以直接修改PATH的值,执行该脚本文件生效,需要注意的点是直接运行脚本文件只在该终端生效,要想这个修改运用到其他终端,执行脚本文件的时候需要加上source,比如说 source ./test.sh

现在我们来理解下这句话:PATH=/opt/buildroot-2017.08/output/host/usr/bin:$PATH

其中PATH=不用解释吧,就是重新给PATH赋值;

“:”冒号在这里的作用只起分隔符的作用

$PATH”指当前的系统环境变量值,根据PATH的定义,可以理解成当前运行命令查找的路径有当前这些

然后PATH=/opt/buildroot-2017.08/output/host/usr/bin:$PATH的意思就是重新定义PATH的值,也就是当运行命令时,可以从路径/opt/buildroot-2017.08/output/host/usr/bin加上原来PATH里的路径里面去找这个运行命令的可执行文件;

一旦找到就正常执行,找不到就提示找不到该命令

注:提交一个命令时,如果用户没有提供完整路径,那么shell依次在PATH变量指定的目录去寻找,一旦找到这个程序就会执行,如果没找到则报错找不到该命令;

如果在 PATH 包含的目录中,有多个目录都包含某命令的可执行文件,那么会执行先搜索到的可执行文件

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鱼2333号程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值