-
2014-06-15 23:42:53
在公司写C Shell习惯了,在家里写Bash还真有点不习惯。下面将不同的问题罗列一下。发现一点更新一点。
1. 变量的声明
CSH: set value1=1 #等号两边可以有空格 BASH: $value=1 #等号两边千万不要有空格,如果有空格则出现下面错误:不是有效的标识符
2. 变量的使用(相同的)echo $value
3. 环境变量设定CSH: setenv value 1 BASH: export value=1
4. 环境变量的废弃CSH: unsetenv name BASH: unset name
更多相关内容 -
Linux中的shell和bash
2018-11-29 23:12:56shell shellscript sh bash Dash tty 、pty 和pts 学安全的我们,经常会听到说获得某服务器的shell,就是指获得某个服务器的操作权限。我们学习linux时,经常会遇到bash,bash也是指的是某个服务器的权限。...目录
学安全的我们,经常会听到说获得某服务器的shell,就是指获得某个服务器的操作权限。我们学习linux时,经常会遇到bash,bash也是指的是某个服务器的权限。那么,这两者有什么区别和联系呢?
shell
Shell 俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。
我们先来看一些Linux系统的结构
<
-
Bash和shell
2019-03-06 14:55:03一、什么是shell,什么是bash? 管理计算机硬件的其实是内核,用户正是通过shell来跟内核通信的,从本质上说shell是一个能执行各种命令的宏处理器。而bash(/bin/bash)就是linux默认的shell。 ...一、相关概念
1、什么是shell,什么是bash?
管理计算机硬件的其实是内核,用户正是通过shell来跟内核通信的,从本质上说shell是一个能执行各种命令的宏处理器。而bash(/bin/bash)就是linux默认的shell。
2、什么是子shell?
子shell就是从当前shell环境中新开了一个shell环境。子shell和父shell的关系就是子进程和父进程的关系。子shell可以从父shell中继承很多环境,如变量、命令全路径、文件描述符、当前工作目录、陷阱等等。
3、子shell如何产生?(https://www.linuxidc.com/Linux/2017-08/146606.htm)
Linux上创建子进程的方式有三种:一种是fork出来的进程,一种是exec出来的进程,一种是clone出来的进程。(先不讨论clone)
(1).fork是复制进程,它会复制当前进程的副本(不考虑写时复制的模式),以适当的方式将这些资源交给子进程。
(2).exec是加载另一个应用程序,替代当前运行的进程,也就是说在不创建新进程的情况下加载一个新程序。exec还有一个动作:在进程执行完毕后,退出exec所在的shell环境。为了进程安全,如要形成新的且独立的子进程,都会fork一份当前进程,然后在fork出来的子进程上调用exec来加载新的程序。4、如何判断是否进入了子shell?
执行
[root@myp ~]# echo "$BASHPID" 6371
如果输出结果和父进程中的pid值不同则就是进入了子shell.
5、进入子shell中的情况
- 执行bash内置命令时
- 执行脚本文件时
- 执行bash命令时
- 执行shell函数时(直接执行时不会进入子shell但是放入管道中会进入子shell)
- 执行非bash内置命令时
- 命令替换
- 使用括号()组合一系列命令
- 放入后台运行的命令
- 进程替换
二、shell执行命令的过程
- 从终端或者shell脚本或者 bash -c "STR"中读取命令
- 将命令拆分成单词和运算符
- 将符号解析成简单或者复杂的命令
- 进行各种sh+ell扩展
- 重定向
- 执行命令
- 等待命令解释,收集结束转态
-
【Linux Shell】你知道bash shell和dash shell的区别吗?
2021-07-16 11:32:00bash shell 和 dash shell 的区别,你真的了解吗? 本文将给你解开一些答案!最近在工作中遇到一个很奇葩的问题,就是一个嵌入式的SDK编译,它里面执行shell命令的时候,使用的dash shell来解析,而通常我们默认用的是bash shell来解析;我按照bash shell那样照常编写脚本,大部分的脚本是没有问题的,但是偏偏就被我遇到了不一样的地方,以此文记录下。
先说下bash shell与bash shell的关系。
什么是bash ?
Bash(GNU Bourne-Again Shell)是许多Linux平台的内定Shell,事实上,还有许多传统UNIX上用的Shell,像tcsh、csh、ash、bsh、ksh等等。
GNU/Linux 操作系统中的 /bin/sh 本是 bash (Bourne-Again Shell) 的符号链接,但鉴于 bash 过于复杂,有人把 bash 从 NetBSD 移植到 Linux 并更名为 dash (Debian Almquist Shell),并建议将 /bin/sh 指向它,以获得更快的脚本执行速度。Dash Shell 比 Bash Shell 小的多,符合POSIX标准。
Debian和Ubuntu中,/bin/sh默认已经指向dash,这是一个不同于bash的shell,它主要是为了执行脚本而出现,而不是交互,它速度更快,但功能相比bash要少很多,语法严格遵守POSIX标准。
简单来说,就是dash是bash的简化版本,没有支持那么复杂的东西。
再看下我遇到的问题,为了好做对比,我分别写了1个脚本,分别用bash和dash去解析运行,得出不同的答案。
脚本内容如下:
result=1234 if [[ "$result" == "1234" ]]; then echo "yes" else echo "no" fi if [ "$result" == "1234" ]; then echo "yes" else echo "no" fi if [[ "$result" = "1234" ]]; then echo "yes" else echo "no" fi if [ "$result" = "1234" ]; then echo "yes" else echo "no" fi
OK,脚本对应的行号如下所示:
使用/bin/bash运行,一切正常,输出4个yes。
使用/bin/dash运行,只有一个输出正常,3处报错!!!
为何???
原来,dash是很奇葩的:
- if 里面的条件语句只能使用 [ ] 不能使用 [[ ]];
- 字符串判断,只能使用 = 不能使用 ==;
word天呐!!就是这么回事。
我们还可以使用 ls -al /bin/sh查看下系统默认的shell解析器是什么,如下:
至于 [ ] 与 [[ ]] 的区别,可以参考这篇文章:Linux Shell 中的 ()、(())、[]、[[]]、{} 怎么用是不是还傻傻分不清?
== 可用于判断变量是否相等,= 除了可用于判断变量是否相等外,还可以表示赋值。
= 与 == 在 [ ] 中表示判断(字符串比较)时是等价的。
今天的总结就介绍到这,有什么问题,欢迎你在评论区告诉我。
-
Linux之shell以及bash、dash的详解
2018-07-17 15:47:25Linux之shell、sh、bash、dash详解 首先,我们先借用两张图来简单概括一下Linux系统的结构: 好的,下面我们来分别来解释其中的一些概念和作用: Shell与Shell script 何为linux的shell? 人们总是... -
Linux中Bash和Shell的区别
2020-04-17 21:06:52`Bash`就是`系统自带的Shell`(App),直白点讲就是常用的`命令行窗口`。Shell包括Bash,但其他的专门指令操作,也可以集成为另一个Shell(某个命令如`man`就相当于一个应用程序,然后通过`壳程序/命令行`模式来调度... -
csh,tcsh,bash,sh等shell的区别
2021-01-10 09:24:35出自bash的faq,仔细看看。...C1) bash和 sh、Bourne shell的区别This is a non-comprehensive list of features that differentiate bashfrom the SVR4.2 shell. The bash manual page explains th -
bash和shell的区别
2017-12-14 08:52:02Linux 中的 shell 有很多类型,其中最常用的几种是: Bourne shell (sh)、C shell (csh) 和 Korn shell (ksh), 各有优缺点。Bourne shell 是 UNIX 最初使用的 shell,并且在每种 UNIX 上都可以使用, 在 shell 编程... -
csh和bash的语法对比
2021-05-30 12:56:16一般来说,能用bash 语言...下面将bash和csh,做一些对比,方便将bash转变成csh. 一,关于变量设置,和环境变量设置 bash: a=`pwd` # =号两边必须无空格,命令转变量也可以用$(pwd) export b=1 # 设置环境变量 csh -
Shell、Bash、Zsh这都是啥啊
2022-02-04 14:05:04一文了解Shell、Bash、Zsh -
linux基础:shell中的sh与bash区别与常用命令
2020-05-18 21:49:32一,什么是shell和bash? 二,shell的基本用法 三,bash的基本用法 一,什么是sh和bash? #!/bin/sh是#!/bin/bash的缩减版 Linux系统中的/bin/sh本是bash的符号链接,鉴于bash过于复杂,有人把bash从NetBSD移植到... -
Mac终端shell类型bash和zsh切换
2021-01-04 13:47:04切换到bash 输入命令:chsh -s /bin/bash 切换到zsh 输入命令:chsh -s /bin/zsh 注意需要重启终端生效(强制退出后再打开) 遇到个问题:无法正常使用/usr/...bash是Mac OS默认的shell 什么是shell? 点击查看 ... -
Shell bash和sh区别
2019-07-16 16:02:08Shell 中文意思贝壳,寓意类似内核的壳。Shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是... -
Linux-SHELL中sh和bash的区别
2016-04-28 20:35:09我们通过hsell和用户通信SHELL简而言之就是只要能够操作应用程序的接口都能够称为SHELL。狭义的shell指的是命令行方面的软件,广义的SHELL则包括图形界面。SHELL的版本在鸟哥的私房菜的一书中,介绍了UNIX的版本以及... -
Linux中"Shell"与"Bash"的关系
2019-02-16 14:39:06Bash"的关系 此文属于我在学习Linux中的学习记录,便于回头查找相应文档使用,大多数解释都为其它网站引用,也用来分享给大家做个参考, 1、认识Shell 在计算机科学中,Shell俗称壳(用来区别于核),是... -
bash shell命令行选项与修传入参数处理
2020-09-15 20:06:17本文介绍了bash shell命令行参数与命令行选项的操作方法,有关shell 命令行参数的实例教程,有需要的朋友参考下。 -
将Linux shell改为bash
2020-11-17 14:45:09将Linux shell改为bash 查看shell是否为bash,在终端运行如下命令 ls -l /bin/sh 如果显示为“/bin/sh -> bash”则为正常,否则请按以下方式修改: 方法一:在终端运行如下命令,然后选择 no。 sudo dpkg-... -
在shell脚本bash中嵌入expect代码
2021-12-15 09:46:46/bin/bash #push calibration file to robot adb push ./test.txt /userdata/ expect -c " spawn adb shell expect "*root*" {send "ls\\r"} interact " 代码解析: 先使用adb push 上传了文件test.txt 到 /... -
Learning The Bash Shell, 3rd Edition
2018-04-05 21:34:01如果要学Bash,个人认为这是最好的教程,讲解通俗易懂,还有大量的例子,只要完整学一遍,保证能学会 -
bourne shell 与bash的区别
2013-04-07 16:24:39源自... bourne shell级系统中使用的sh ...bash即bourne again shell 区别: bash是增强版 BOURNE SHELL BASH 命 -
bash_shell_mock:用于BASH shell的shell脚本模拟实用程序框架
2021-01-31 01:29:23bash_shell_mock:用于BASH shell的shell脚本模拟实用程序框架 -
shell 高级bash脚本编程指导中文翻译版本
2018-03-14 12:11:13shell 高级bash脚本编程指导 中文翻译版本 shell 高级bash脚本编程指导 中文翻译版本 -
bash和sh的区别,以及执行脚本的几种方式
2021-04-18 18:23:09Shell 中文意思贝壳,寓意类似内核的壳。Shell是指一种应用程序,这个应用程序提供了一个...常说的shell通常都是指 shell 脚本,但shell和shell script是两个不同的概念。通常说“shell编程”都是指 shell 脚本编程,不 -
Advanced Bash Shell Guide (bash高级指南)
2017-10-10 15:49:01毫无疑问,UNIX/Linux最重要的软件之一就是shell,目前最流行的shell被称为Bash(Bourne Again Shell),几乎所有的Linux和绝大部分的UNIX都可以使用Bash。作为系统与用户之间的交互接口,shell几乎是你在UNIX工作平台... -
Linux 中kernel, shell和bash。
2016-03-18 14:18:10kernel shell bash简介 kernell的中文意思是“核心”, 顾名思义,是Linux系统的内核, 也就是系统的核心部分,用于管理存储器、文件、外设和系统资源等。 shell的中文意思是“外壳”, 这个外壳... -
bash-powerline-shell:为您的bash shell提供美观,有效和有用的PS1提示
2021-01-31 01:59:12bash-powerline-shell:为您的bash shell提供美观,有效和有用的PS1提示 -
bash_shell_scripts:我已经完成的Bash shell脚本
2021-02-26 06:16:48bash_shell_scripts 我已经完成了一些bash shell脚本。 并非总是完美的,但很有用。 JB -
shell bash脚本_如何在Windows 10上创建和运行Bash Shell脚本
2020-09-11 19:55:14shell bash脚本With the arrival of Windows 10’s Bash shell, you can now create and run Bash shell scripts on Windows 10. You can also incorporate Bash commands into a Windows batch file or PowerShell ... -
几种常见的Shell:sh、bash、csh、tcsh、ash
2018-07-18 16:27:46Linux 是一个开源的操作系统,由分布在世界各地的多个组织机构或个人共同开发完成,每个组织结构或个人负责一部分... GNU 组织开发了很多核心软件和基础库,例如 GCC 编译器、C语言标准库、文本编辑器 Emacs、进程管...