首页
学习
活动
专区
工具
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和&符号在后台执行命令后,即使你退出登录,这个命令也会一直执行。...Linux的screen命令提供了分离和重新连接一个会话的功能。当你重新连接这个会话的时候,你的终端和你分离的时候一模一样。 4....使用at将一个命令作为批处理执行 使用at命令,你可以让一个命令在指定的日期和时间运行,例如要在明天上午10点在后台执行备份脚本,执行下面的命令: $ at -f backup.sh 10 am tomorrow

4.3K50

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博客_java将jar包中文件复制到 (2)用方式二执行脚本

18310
  • 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.6K20

    【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写在顶部,这才是标准的写法。

    35630

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

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

    2.3K20

    通过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.2K00

    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

    Linux系统shell脚本编写及定时每周期运行

    Linux运维包括编写linux shell脚本,并定时让shell脚本自动运行流程,适用于新手。...注意:脚本是以.sh结尾的文件,脚本文件保存位置放哪都可以,但要知道路径,后续添加定时任务的时候需要用到。下面开始shell脚本从编写到自动定时运行的教程。...一:编写shell脚本 命令:vi name.sh 编辑你的shell脚本 二:开启定时服务 命令:service crond start 编辑完成后开启定时服务,一般是默认开启的 三:编辑添加定时任务...命令:crontab -e 例如:让此脚本每10分钟运行一次,则写入如下内容: */10 * * * * name.sh 斜杠“/”后面的*号含义是:分钟 小时 天 月 周,然后跟上要运行的脚本名字即可

    3.6K10
    领券