什么是shell和shell编程
linux-dash
A beautiful web dashboard for Linux
项目地址:https://gitcode.com/gh_mirrors/li/linux-dash
免费下载资源
·
1.什么是shell?
shell是你(用户)和Linux(或者更准确的说,是你和Linux内核)之间的接口程序。你在提示符下输入的每个命令都由shell先解释然后传给Linux内核。 说到底,Shell是用户与内核进行交互操作的一种接口,目前最流行的Shell称为bash Shell
Shell是解释执行的脚本语言,所谓脚本语言就是不用编译就可以直接执行的语言。在Shell中可以调用Linux系统命令。
shell的最强大的重要特性是它自身就是一个解释型的程序设计语言,shell 程序设计语言支持在高级语言里所能见到的绝大多数程序控制结构,比如循环,函数,变量和数组。shell 编程语言很易学,并且一旦掌握后它将成为你的得力工具。任何在提示符下能键入的命令都能放到一个可执行的shell程序里,这意味着用shell语言能简单地重复执行某一任务。
2.linux中有哪些shell?
一个系统可以存在多个shell,可以通过cat /etc/shells命令查看系统中安装的shell,不同的shell可能支持的命令语法是不相同的,但是最常用的shell还是/bin/bash。下面的演示也基于/bin/bash
[robot@hadoop103 ~]$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
sh(全称 Bourne Shell): 是UNIX最初使用的 shell,而且在每种 UNIX 上都可以使用。
Bourne Shell 在 shell 编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种 shell。
bash shell(全称 Bourne Again Shell): LinuxOS 默认的,它是 Bourne Shell 的扩展。
与 Bourne Shell 完全兼容,并且在 Bourne Shell 的基础上增加了很多特性。可以提供命令补全,命令编辑和命令历史等功能。
它还包含了很多 C Shell 和 Korn Shell 中的优点,有灵活和强大的编辑接口,同时又很友好的用户界面。
3.演示一个demo
一个简单的shell实例(用shell脚本语言启动tomcat)
#!/bin/sh
cd /usr/local/apache-tomcat-5.5.23/bin/
./catalina.sh start
文件取名为tomcat
说明
这个脚本只有三行,它的第一行指明这个脚本程序由那个程序来解释。
第二行只有一个简单的动作进入某个目录,第三行调用catalina.sh脚本启动tomcat。
执行脚本
执行脚本前先赋予tomcat脚本可执行权限,命令如下:chmod +x tomcat ,
否则会出现如下错误:-bash: ./tomcat: Permission denied #当然如果直接用sh tomcat执行,不需要u+x赋予执行权限
假设tomcat脚本所在目录为为/home/amy/
在/home/amy/目录下执行脚本: ./tomcat
在别的目录下执行脚本: /home/amy/tomcat
4.Shell编程模型
m
首先要赋予+x权限,赋予脚本执行权限
第一种:输入脚本的绝对路径或相对路径
/root/helloWorld.sh
./helloWorld.sh
或者,不用赋予+x权限,而用解释器解释执行u+x
第二种:bash或sh +脚本
sh /root/helloWorld.sh
sh helloWorld.sh
第三种:在脚本的路径前再加". "
. /root/helloWorld.sh
. ./helloWorld.sh #注意这里两个点。当然加一个点也可以执行,属于第一种
区别:第一种和第二种会新开一个bash,不同bash中的变量无法共享
先见森林,再见树木,知其然,再知其所以然 GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e
added ecosystem file for PM2 4 年前
5def40a3
Add host customization support for the NodeJS version 4 年前
更多推荐
已为社区贡献13条内容
所有评论(0)