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

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

在研究《管理Python虚拟环境的脚本》时,我们使用了source指令而没有使用sh或者bash来执行脚本,就是因为source指令可以让脚本在当前bash(sh)中执行;而sh或者bash则会新启动一个...source source test.sh $$ processInfo: 40883 bash 可以见得没有启动新的bash程序。 source还可以让自动注册脚本中的函数。...比如上面指令让脚本中的findParentID方法可以直接被使用。...-o -n "${ZSH_VERSION:-}" ] ; then hash -r 2> /dev/null fi 如果我们使用bash来执行,则因为虚拟环境会在新启动的bash中存在,并会快速退出...所以如果我们希望脚本对当前bash有所影响,就要使用source去执行脚本;如果不希望影响当前bash,则可以使用bash或者sh去执行。 需要注意的是,bash并不等价于sh。

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

    如何优化 Bash 脚本的执行效率?

    要优化 Bash 脚本的执行效率,可以考虑以下几个方面: 减少命令执行次数:Bash 脚本中的命令执行是比较耗时的,在可能的情况下,可以尽量减少命令的执行次数。...避免不必要的子进程:Bash 脚本中的子进程启动和销毁是比较耗时的。因此,尽量避免创建不必要的子进程。...使用并行处理:如果脚本中有独立的任务可以并行执行,可以使用 Bash 的并行处理功能来提高执行效率。 避免过多的文件操作:文件操作也是比较耗时的,尽量避免不必要的文件操作。...例如,可以将需要频繁读取的文件内容保存到变量中,而不是每次都读取文件。 使用合适的数据结构和算法:如果脚本中有复杂的数据处理逻辑,可以考虑使用合适的数据结构和算法来提高执行效率。...综上所述,通过减少命令执行次数,使用内建命令和避免不必要的子进程,使用并行处理,避免过多的文件操作,以及使用合适的数据结构和算法,可以有效地优化 Bash 脚本的执行效率。

    12400

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

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

    3.7K10

    在字符串中删除特定的字符

    首先我们考虑如何在字符串中删除一个字符。由于字符串的内存分配方式是连续分配的。我们从字符串当中删除一个字符,需要把后面所有的字符往前移动一个字节的位置。...在具体实现中,我们可以定义两个指针(pFast和pSlow),初始的时候都指向第一字符的起始位置。当pFast指向的字符是需要删除的字符,则pFast直接跳过,指向下一个字符。...这样,前面被pFast跳过的字符相当于被删除了。用这种方法,整个删除在O(n)时间内就可以完成。 接下来我们考虑如何在一个字符串中查找一个字符。当然,最简单的办法就是从头到尾扫描整个字符串。...我们可以新建一个大小为256的数组,把所有元素都初始化为0。然后对于字符串中每一个字符,把它的ASCII码映射成索引,把数组中该索引对应的元素设为1。...这个时候,要查找一个字符就变得很快了:根据这个字符的ASCII码,在数组中对应的下标找到该元素,如果为0,表示字符串中没有该字符,否则字符串中包含该字符。此时,查找一个字符的时间复杂度是O(1)。

    9.1K90

    【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.3K20

    在python脚本中执行shell命令的方法

    在python脚本中执行shell命令的方法 最近在写python的一些脚本,之前使用python都是在django中使用,可能大部分内容都是偏向于后端开发方面的,最近在写一些脚本的时候,发现了...看下面的测试 1os的方法只能得到返回值,执行结果无法保存 2>>> import os 3>>> a=os.system('cat aaa.sql') 4aaa 5>>> print a...,可以得到一个脚本或者一个命令的返回值和执行结果,当然,我们也可以使用下面的方法来分别校验aaa.sql文件是否存在,以及查看aaa.sql的执行结果: 1[root@ /data]$python 2Python...,把脚本的执行结果和返回值进行保存,根据脚本执行的结果来确定最终的返回值: 1cmd = "/bin/sh /data/scripts/test.sh %s" % para 2status, res...] 7else: 8 result["result"] = false 9 result["message"] = res 10return Response(result) 如果脚本中是对数据库的一系列操作

    5.4K00

    在Bash shell脚本中如何检查一个目录是否存在

    问: 在 Bash shell 脚本中什么命令检查某个目录是否存在?...答: 要检查目录是否存在,请执行以下操作: if [ -d "$DIRECTORY" ]; then echo "$DIRECTORY does exist." fi 一行代码的形式则如下: [...如果不考虑符号链接到目录的情况,后续命令可能无法按预期工作,因为符号链接也会通过这个检查。...在 Unix 的早期设计中,许多系统资源都被抽象为文件,以实现统一和一致的接口处理,这样程序员可以使用相同的系统调用来操作不同的资源,如普通文件、目录、设备等。...这种哲学影响了许多 Unix-like 的操作系统,包括 Linux。 这里顺便整理一下 Bash 中对文件的各种测试: -a file -- 如果文件存在则为真。

    44710

    在 Shell 脚本中执行语法检查调试模式

    文章目录 shell 脚本调试系列 概述 启用 verbose 调试模式 在 Shell 脚本中启用语法检查调试模式 通过修改脚本的首行来启用脚本检查 内置的 set 命令来在脚本中启用调试模式 shell...脚本调试系列 Linux 中启用 Shell 脚本的调试模式 在 Shell 脚本中执行语法检查调试模式 在 Shell 脚本中跟踪调试命令的执行 ---- 概述 ?...记住我们之前在本系列的 Linux 中启用 Shell 脚本的调试模式 中解释了不同的调试选项,在这里,我们将使用它们来执行脚本调试。...: $ bash -v script.sh ---- 在 Shell 脚本中启用语法检查调试模式 回到我们主题的重点,-n 激活语法检查模式。...激活语法检查的命令如下: $ bash -n script.sh 因为脚本中的语法是正确的,上面的命令不会显示任何东西。

    1.9K20

    我可以在不source脚本的情况下将变量从Bash脚本导出到环境中吗

    /usr/bin/env bash export VAR="HELLO, VAR" 当我执行脚本并尝试访问 $VAR 时,我没有得到任何值!...echo $VAR 有没有一种方法可以通过只执行 export.bash 而不 source 它获取 $VAR? 答: 不可以。 但是有几种可能的解决办法。...在调用 shell 的上下文中执行脚本: $ cat set-vars1.sh export FOO=BAR $ . set-vars1.sh $ echo $FOO BAR 另一种方法是在脚本中打印设置环境变量的命令.../set-vars2.sh)" $ echo "$FOO" BAR 在终端上执行 help export 可以查看 Bash 内置命令 export 的帮助文档: # help export export...help eval 相关阅读: 用和不用export定义变量的区别 在shell编程中$(cmd) 和 `cmd` 之间有什么区别 ----

    30320

    在特定环境中安装指定版本的Docker

    通常用官方提供的安装脚本或软件源安装都是安装的比较新 Docker 版本,有时我们需要在一些特定环境的服务器上安装指定版本的 Docker。今天我们就来讲一讲如何安装指定版本的 Docker 。...如果觉得手动安装太过复杂,也可以直接使用下面的脚本一键安装: $ curl -sSL https://github.com/gitlawr/install-docker/blob/1.0/.sh?...raw=true | sh 使用需要的 Docker 版本替换以下脚本中的 ,目前该脚本支持的 Docker 版本: 1.10.3 1.11.2 1.12.1 1.12.2 1.12.3 1.12.4...1.12.5 1.12.6 1.13.0 1.13.1 17.03.0 17.03.1 17.04.0 注:脚本使用 USTC 的软件包仓库,已基于 Ubuntu_Xenial , CentOS7 以及...脚本会根据 Linux 发行版有少许区别,比如 Ubuntu 16.04 下不兼容 Docker-1.10.3。 这里以安装 1.13.1 为例:

    4K20
    领券