首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Bash shellbashsh、source及“.”的区别与联系

众多Linux发行版bash shell 可谓是随处可见。作为众多发行版的首选shell,对于bash shell的学习对我们来说,显得格外重要。...在学习bash shell的过程bashsh、source及英文输入状态下的点号经常交替出现,他们看起来作用都差不多,但是深究下去,他们也有着不小的区别与联系。...查看shell的历史我们可以知道,我们通常所说的bash shellbash)全称为GNU Bourne-Again SHell目前的发行版sh已经成为bash的一个软连接。...从上面的2个代码块,我们可以看出,b.sh脚本直接引用了a.sh的变了,如果我们依次执行几个有关联的脚本就可以采用这种方式,否则则使用bashsh比较恰当。...四、结论 bashsh在对于脚本执行来说,效果一致,不继承除了当前shell之外的变量值。无空格“.”且有执行权限的脚本执行,效果与bashsh一致。

79210

shell脚本】$ shell脚本的使用

shell脚本 '$' 与不同的符号搭配其表示的意义也会不同 特殊标志符 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。...例如,第一个参数是$1,第二个参数是$2 $# 传递给脚本或函数的参数个数 $* 传递给脚本或函数的所有参数 $@ 传递给脚本或函数的所有参数 $?...上个命令的退出状态 $$ 当前Shell进程ID $() 与 `(反引号) 一样用来命令替换使用 ${} 引用变量划分出边界 注释:$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" ".../bin/bash echo "file name $0" echo "first param $1" echo "pid $$" echo "total num of param $#" echo...echo "$@" echo "$*" 执行 ./1.sh hello mayuan file name ./1.sh first param hello pid 142 total num of param

6.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

在当前bash(sh)执行脚本和注册函数

研究《管理Python虚拟环境的脚本》时,我们使用了source指令而没有使用sh或者bash来执行脚本,就是因为source指令可以让脚本在当前bash(sh)执行;而sh或者bash则会新启动一个...source source test.sh $$ processInfo: 40883 bash 可以见得没有启动新的bash程序。 source还可以让自动注册脚本的函数。...所以如果我们希望脚本对当前bash有所影响,就要使用source去执行脚本;如果不希望影响当前bash,则可以使用bash或者sh去执行。 需要注意的是,bash并不等价于sh。...sh(Bourne Shell)是1978年由史蒂夫·伯恩编写的shellbash(Bourne-Again Shell)是1987年由布莱恩·福克斯为GNU计划编写的Unix shell。...主要目标是与POSIX标准保持一致,同时兼顾对sh的兼容,是各种Linux发行版标准配置的Shell。比如上面test.sh使用bash可以正确执行,而sh执行就会报错。

13610

Bash shellbashsh、source及“.”点等五种执行方式的区别与联系

欢迎转载,转载请注明出处,谢谢 众多Linux发行版bash shell 可谓是随处可见。作为众多发行版的首选shell,对于bash shell的学习对我们来说,显得格外重要。...查看shell的历史我们可以知道,我们通常所说的bash shellbash)全称为GNU Bourne-Again SHell目前的发行版sh已经成为bash的一个软连接。...从上面的2个代码块,我们可以看出,b.sh脚本直接引用了a.sh的变了,如果我们依次执行几个有关联的脚本就可以采用这种方式,否则则使用bashsh比较恰当。...四、结论 bashsh在对于脚本执行来说,效果一致,不继承除了当前shell之外的变量值。无空格“.”(相对路径)、绝对路径且有执行权限的脚本执行,效果与bashsh一致。...bashsh、不带空格的点(相对路径)或绝对路径脚本子进程执行的。source及带空格的点中,脚本父进程执行的,差别很大。

3.1K10

SHELL(bash)脚本编程一:变量

本篇开始,介绍shell脚本编程,更确切的说是bash脚本编程(版本:4.2.46(1)-release)。我们从变量开始。...登录shell的进程名为-bash,非登录shell(比如在桌面环境下通过打开一个"终端"窗口程序而获得的shell)的进程名为bash。.../中所有以.sh结尾的文件);然后按顺序搜索用户家目录下的~/.bash_profile、~/.bash_login和~/.profile,并执行找到的第一个可读文件(centos7系统是文件~/....非交互式shell启动时(如脚本),会继承派生出此shell的父shell的环境变量并执行环境变量BASH_ENV的值中所指代的文件。...$_ shell初始启动时表示启动此shell命令的绝对路径或脚本名,随后,表示前一条命令的最后一个参数。 声明/定义及赋值 通常bash的变量是不需要提前声明的,可以直接进行赋值。

2.7K40

SHELL(bash)脚本编程八:技巧

至此,我们介绍了linux系统中常用命令的使用方法,简述了bash程序的使用方法和工作流程。使用bash编写脚本程序时,熟练掌握这些工具的用法,往往能够达到事半功倍的效果。...1、笔试题 先来看某公司的两个笔试题: 1、写脚本实现,可以用shell、perl等。目录/tmp下找到100个以abc开头的文件,然后把这些文件的第一行保存到文件new。...2、写脚本实现,可以用shell、perl等。把文件b中有的,但是文件a没有的所有行,保存为文件c,并统计c的行数。 问题没什么可分析的,直接的解决方案: #!...4、并发 我们描述重定向与管道的文章中讲述过一种并发方式,下面介绍另一种。 我们说过,命令替换的问题是命令的立即执行然后等待结果,此时shell无法传入输入。...关键在于Bash为这条命令打开了一个用于读和写的管道,并且绑定到一个文件名,最后展开为结果。 利用进程替换的这一特性,可以想到另外一种并发的方式: #!

60120

如何在 Bash Shell 脚本显示对话框

这个教程给出几个如何使用类似zenity和whiptail的工具Bash Shell 脚本中提供消息/对话框的例子。使用这些工具,你的脚本能够告知用户当前程序运行的状态并能与用户进行交互。...Zenity 工具 Ubuntu安装zenity,运行: ? 用zenity创建消息框或者对话框的命令是不言自明的,我们会给你提供一些例子来参考。 创建消息框 ? ?...创建输入框并将输入值保存到变量 ? ? 输入后,值会保存在变量 $a 。 这是一个获取用户姓名并显示的实际事例。 ? 这些是运行前面脚本的截图。 ? 框1 ? 输入框 ? 输入框 ? 输入框 ?...这是一个请求用户输入一个文件夹的路径并输出它的大小的 shell 脚本。 ? 这是之前例子的一些截图: ? 输入框 ? 消息框 如果你终端下工作,帮助手册总是有用的。...结论 选择合适的工具显示对话框取决于你期望桌面机器还是服务器上运行你的脚本。桌面机器用户通常使用GUI窗口环境,也可能运行脚本并与显示的窗口进行交互。

2.5K10

【.shShell 脚本文件的基础内容

基础知识 .sh文件是什么? .sh文件即 Shell 脚本文件,通常用来执行一系列的命令。.../bin/bash:这是脚本的第一行,称为"shebang"。它告诉系统应该使用哪个解释器来执行这个脚本。在这个例子,#!/bin/bash表示使用Bash作为解释器来执行这个脚本。...#:脚本以#开头的行是注释,不会被解释器执行。 echo "Hello, World!":这一行是实际的命令,用于向终端输出文本"Hello, World!"。...可以通过终端中导航到脚本所在的目录,并键入如下指令: chmod 777 test01.sh ./test01.sh 运行脚本,会在终端输出"Hello, World!".../bin/bash # 提示用户输入姓名 echo "请输入您的姓名:" # 从用户输入读取姓名并存储到变量 read name # 打印欢迎消息 echo "欢迎您,$name!

12410

SHELL(bash)脚本编程五:内置命令

因为是在当前环境执行文件内容,该文件并不需要具备可执行权限,执行完毕后,文件内部声明的变量或定义的函数可以在当前环境中直接使用。...执行的外部命令会被缓存在一个哈希表,直接执行命令hash可以查看当前bash缓存了哪些外部命令: [root@centos7 ~]# hash 命中 命令 5 /usr/bin/...退出状态: 以命令的状态退出,或者命令为空的情况下返回成功。 6、shopt 设置或取消设置shell选项,这些选项都是用来控制shell行为的。...一种常见用途是脚本程序被中断时完成清理工作。.../bin/bash -x #需要保护运行的代码前设置忽略的信号: trap "echo 'protected'" 1 2 3 20 #或者 trap "echo 'protected'" HUP INT

55020

SHELL(bash)脚本编程四:其他扩展

之前的文章我们讲述了变量扩展、数学扩展和命令替换。本篇接着介绍shell中用到的其他扩展。 历史扩展 默认时,交互式shell环境下,bash允许对历史命令进行记录和扩展。...默认时shell脚本不能使用别名。别名扩展是完全基于文本的,因而别名可以改变shell语法。几乎任何别名的作用,都可以用shell函数来实现。 大括号扩展 大括号扩展是一种生成任意字符串的机制。...关键在于Bash为这条命令打开了一个用于读和写的管道,并且绑定到一个文件名,最后展开为结果。 进程替换的格式为:(command)。.../test.sh 5050 [root@centos7 temp]# 任务控制 允许任务控制的系统上,bash可以有选择地挂起某个前台进程,并使它在后台异步地继续执行。...shell脚本,以控制操作符&结尾的命令也会被作为后台命令异步地执行,当前shell不会等待此命令执行结束,命令的返回码为0。

72630

SHELL(bash)脚本编程六:执行流程

bash命令的执行分为四大步骤:输入、解析、扩展和执行。 本文将详述bash命令的一般处理过程: 如图所示 ? 输入 交互模式 交互模式下,输入来自终端。...将编辑缓冲区的内容交给bash之前,Readline会执行历史扩展(见这里),之后由bash负责将本条命令存储到历史列表并进入下一步骤。 非交互模式 非交互模式下,输入一般来自文件。...另外,默认时只有交互式shell环境下才允许别名扩展。如果需要在脚本中使用命令别名,则需开启选项shopt -s expand_aliases。...由于别名的功能都可以用函数实现,建议脚本中使用函数来代替命令别名。...最终解析器返回一个C结构体来表达一个命令(对于复合命令,这个结构体可能还包含有其他命令),然后将其传递给shell的下一阶段:单词展开。

1.6K40

Shell-aliasShell脚本的使用

概述 shell开启alias 实际操作 概述 众所周知,shell脚本使用的是非交互式方式,非交互式模式下alias扩展功能默认是关闭的,此时虽然可以定义alias别名,但是shell不会将alias...---- shell开启alias 使用shell内置命令shopt命令来开启alias扩展选项。...默认是打开的,非交互式模式下是关闭的,但可以用可shopt来将其开启 shopt -s expand_aliases ---- 实际操作 我们的项目中某个模块的双机启动脚本(root用户下操作),...项目启动中会依赖一些环境变量,所以双机启动脚本需要显式的引入.bash_profile文件。 所以我们将 开启alias的命令放在 .bash_profile。...source .bash_profile 生效。 ? 脚本如下: #!

2.2K10
领券