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

运行shell脚本将启动新的shell,而不是运行shell脚本

本身。当我们在终端或命令行中执行一个shell脚本时,实际上是在当前的shell环境下创建了一个子shell来执行脚本中的命令。

Shell脚本是一系列命令的集合,它可以用来自动化执行一些常用的任务。当我们运行一个shell脚本时,操作系统会为这个脚本创建一个新的子shell进程,并在这个子shell中逐行执行脚本中的命令。

在运行脚本时,可以通过以下两种方式来启动新的shell:

  1. 在脚本中使用交互式shell命令: 在shell脚本中可以使用交互式shell命令,如bashshzsh等,来启动一个新的shell。这样做的好处是可以在脚本执行完后进入新的shell环境进行进一步的交互操作。例如:
  2. 在脚本中使用交互式shell命令: 在shell脚本中可以使用交互式shell命令,如bashshzsh等,来启动一个新的shell。这样做的好处是可以在脚本执行完后进入新的shell环境进行进一步的交互操作。例如:
  3. 上述示例中,脚本会先输出"This is the parent shell",然后启动一个新的交互式shell,待新的shell执行完毕后,才会输出"This is the child shell"。
  4. 使用source或点操作符来运行脚本: 使用source.操作符来运行shell脚本时,脚本会在当前的shell环境下执行,而不会创建一个新的子shell。这样做的好处是可以使得脚本中定义的变量和函数在当前的shell环境中保持有效。例如:
  5. 使用source或点操作符来运行脚本: 使用source.操作符来运行shell脚本时,脚本会在当前的shell环境下执行,而不会创建一个新的子shell。这样做的好处是可以使得脚本中定义的变量和函数在当前的shell环境中保持有效。例如:
  6. 上述示例中,脚本会先输出"This is the parent shell",然后通过source命令运行script.sh脚本,在脚本执行完毕后继续输出"This is still the parent shell"。

总结: 运行shell脚本会创建一个新的子shell环境,可以通过在脚本中使用交互式shell命令或使用source或点操作符来启动新的shell。使用交互式shell命令可以在脚本执行完毕后进入新的shell环境进行交互操作,而使用source或点操作符可以使得脚本中定义的变量和函数在当前的shell环境中保持有效。

腾讯云相关产品和产品介绍链接:

  • 云服务器CVM:提供安全、高性能的云服务器,满足不同规模业务的需求。详情请参考:https://cloud.tencent.com/product/cvm
  • 云函数SCF:无服务器的事件驱动计算服务,帮助您按需创建、部署和运行代码。详情请参考:https://cloud.tencent.com/product/scf
  • 云数据库CDB:稳定可靠的关系型数据库服务,提供高性能、可扩展的在线数据库。详情请参考:https://cloud.tencent.com/product/cdb
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

shell脚本后台运行

使用&符号在后台执行命令 你可以在Linux命令或者脚本后面增加&符号,从而使命令或脚本在后台执行,例如:. $ ./my-shell-script.sh & 2....使用nohup在后台执行命令 使用&符号在后台执行命令或脚本后,如果你退出登录,这个命令就会被自动终止掉。要避免这种情况,你可以使用nohup命令,如下所示: $ nohup ..../my-shell-script.sh & 3. 使用screen执行命令 通过nohup和&符号在后台执行命令后,即使你退出登录,这个命令也会一直执行。...Linuxscreen命令提供了分离和重新连接一个会话功能。当你重新连接这个会话时候,你终端和你分离时候一模一样。 4....使用at一个命令作为批处理执行 使用at命令,你可以让一个命令在指定日期和时间运行,例如要在明天上午10点在后台执行备份脚本,执行下面的命令: $ at -f backup.sh 10 am tomorrow

4.2K50

Java中运行shell脚本

// 只能接收脚本echo打印数据,并且是echo打印最后一次数据 BufferedInputStream in = new BufferedInputStream(ps.getInputStream...// 只能接收脚本echo打印数据,并且是echo打印最后一次数据 BufferedInputStream in = new BufferedInputStream(ps.getInputStream...br.close(); } catch (Exception e) { e.printStackTrace(); } return result; } } 前提是:你脚本有权限去运行...,即在linux上有权限去运行,否则不通; 如果不满足,如果不满足,下下策为执行脚本之前先执行以下赋予权限命令 ,在执行你命令 ShellUtils.exceShell("chmod -R 777...(在jar包里) (1)复制sh到操作系统某个目录下(亲测,可用) 从jar包内复制文件到系统目录内_CBeann博客-CSDN博客_javajar包中文件复制到 (2)用方式二执行脚本

16410
  • 4、shell脚本后台运行知识

    用途和方法 在实际工作中,一般会通过ssh连接服务器,隐藏可能就会有脚本或命令在执行期间不能中断需求,若中断,则不仅前功尽弃,还可能破坏系统数据,下面是防止脚本执行终端3种方法: 1)使用sh /server.../scripts/while_01.sh & 命令,即使用&在后台运行脚本 2)使用nohup /server/scripts/while_01.sh & 命令,即使用nohup加&在后台运行脚本 3)...使用screen保持会话,然后在执行命令或脚本,即使用screen保持当前会话状态 2.脚本前台后台运行命令 命令 命令说明 a.sh & a.sh放到后台执行,常用 ctrl+c 停止当前前台脚本或任务...ctrl+z 暂停当前前台脚本或任务 bg (background)把当前前台脚本或任务放到后台运行 fg (frontground)把后台脚本或任务放到前台执行,用fg加任务编号调出指定任务,如fg...2 jobs 查看当前执行脚本或任务 kill 关闭执行脚本任务,kill %1 3.

    2.4K20

    shell脚本】$ 在shell脚本使用

    shell脚本中 '$' 与不同符号搭配其表示意义也会不同 特殊标志符 含义 $0 当前脚本文件名 $n 传递给脚本或函数参数。n 是一个数字,表示第几个参数。...例如,第一个参数是$1,第二个参数是$2 $# 传递给脚本或函数参数个数 $* 传递给脚本或函数所有参数 $@ 传递给脚本或函数所有参数 $?...上个命令退出状态 $$ 当前Shell进程ID $() 与 `(反引号) 一样用来命令替换使用 ${} 引用变量划分出边界 注释:$* 和 $@ 都表示传递给函数或脚本所有参数,不被双引号(" "...)包含时,都以"$1" "$2" … "$n" 形式输出所有参数。...但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 形式输出所有参数

    6.2K20

    02 Aug 2019 docker运行shell脚本问题

    这里有2个文件,分别是dockerfile和shell脚本,dockerfile主要功能就是shell脚本复制到容器中运行shell脚本只有一个echo语句,表示脚本运行完毕。...但是我们发现,这里并没有什么二进制文件,只有一个shell脚本。于是,我使用指定cmd再次运行docker: $ docker run -it demo sh / # ..../test.sh run test.sh done / # 发现脚本也能正常运行,到这里,大家应该能猜测到问题所在了,就是顶部注释导致。...如果docker直接运行shell脚本,且脚本顶部不是正确shebang的话,就会出现这种错误。这是最近工作中遇到一个小问题,当时由于环境复杂,没有及时定位出原因。...部分指定shell类型,或者shebang写在顶部,这才是标准写法。

    31930

    怎么正经实现shell脚本单例运行

    假设你一个脚本已经在运行了,如果避免再次被执行呢?也就是如何实现单例运行? 看起来可行方法 一个非常简单思路就是,脚本被执行时,先检测当前脚本是否有其他实例正在运行,如果有则直接退出。 #!...原因在于,shell脚本中一个命令执行相当于fork了一个进程执行,这里执行是查找tesh.sh并grep程序,另外还有一个就是当前运行脚本程序,这样方式自然就会出现每次都有两个了。...文件锁 实际上这种方法你已经在《如何让你程序同时只有一个在运行》介绍过了,只不过之前是用于编写C/C++程序,而这里是用于shell脚本。.../test.sh already running 由于已经有实例在运行,发现程序无法运行了。等旧脚本运行完之后,就可以运行了。...总结 单例运行本身思路是很简单,就是探测当前是否有实例在运行,如果有,则退出,但是这里如何判断,却并不是那么容易。

    2.2K20

    通过JSch运行远程linux主机上shell脚本

    如果您看完文章之后,觉得对您有帮助,请帮我点个赞,您支持是我不竭创作动力! 运行远程主机上shell脚本 下面的例子是教给大家如何通过java程序,运行远程主机上shell脚本。...(我讲不是一个黑客学习教程,而是使用用户名密码去执行有用户认证资格主机上shell脚本)。并且通过java程序获得shell脚本输出。...远程shell脚本 下面的代码放入一个文件:hello.sh,脚本内容很简单只是用来测试,回显输出“hello ” #!.../bin/sh echo "hello $1\n"; 然后我把它放到远程主机/root目录下面,远程主机IP是1.1.1.1(当然我真实测试时候不是这个IP,我不能把我真实IP写到这个文章里面,以免被攻击...并且在远程主机上,为这个脚本设置可执行权限,方法如下: $ chmod +x hello.sh 本地java程序 我们可以使用下面的代码,去远程linux 主机执行shell脚本,详细功能请看代码注释

    2.1K00

    linux下开机启动shell脚本

    背景 设置比较炫酷开机启动脚本 首先,新建一个kaiji.sh 后缀名脚本——>新建脚本在任何位置创建都可以,只要在使用.sh 文件,时候使用绝对路径即可 [root@hf-01 ~]#...cd ./234 [root@hf-01 234]# touch kaiji.sh 然后在脚本中添加以下脚本文件内容到kaiji .sh中 [root@hf-01 234]# vim kaiji.sh...^^^^^^^^^^^^^^^^^^^ 佛祖保佑 iii 永不死机 EOT echo -ne "\033[m" 然后打开.bashrc文件,kaiji.sh...放进.bashrc中 脚本文件必须使用绝对路径,而且必须是开启着 [root@hf-01 ~]# vi .bashrc # .bashrc # User specific aliases and functions.../etc/bashrc fi 这里添加启动脚本,使用绝对路径 sh ./234/kaiji.sh 然后保存退出 最后重新linux启动即可

    4.3K10
    领券