gpt4 book ai didi

linux - 如何在 Linux 上的当前 shell 中执行脚本?

转载 作者:IT王子 更新时间:2023-10-29 00:58:12 25 4
gpt4 key购买 nike

有没有办法在 whitin 中标记一个脚本在当前 shell 中执行?我知道我可以使用:

. ./path/myscript.sh

但我需要一种在脚本中包含“点”方式的方法。

编辑:情况是这样的。我在目录 A 中有一个脚本“myscript.sh”:

rm -r A
mkdir A
touch A/test.file
cd A

当脚本以正常方式执行时:

sh myscript.sh

退出脚本时我无法列出目录。在当前 shell 中启动脚本时:

. ./myscript.sh

没有问题。我需要一种方法将这种“点”方式包含在我的脚本中,以便在没有它的情况下调用它。

最佳答案

有两种方法可以在 shell 中执行脚本。根据您的需要,您必须执行以下操作之一(不要同时执行这两项操作!)。

  1. 将脚本作为程序启动,它有自己的进程。
  2. 源脚本作为一堆文本,其中文本由当前 shell 处理。

将脚本作为程序启动:

  • 添加行 #!/bin/bash 作为脚本的第一行

这将由加载程序读取,加载程序具有特殊的逻辑,将前两个字符 #! 解释为“启动下一个程序,并将内容传递给它”。请注意,这仅适用于为接收内容而编写的程序

将脚本源到当前 shell:

  • 键入命令。 script.shsource script.sh

注意:bash 中的. 等同于bash 中的source

这就像您输入“script.sh”的内容一样。例如,如果您在“script.sh”中设置一个变量,那么该变量将在当前 shell 中设置。您需要取消定义该变量才能将其从当前 shell 中清除。

这与 #!/bin/bash 示例有很大不同,因为在新的 bash 子进程中设置变量不会影响您从中启动子进程的 shell .

关于linux - 如何在 Linux 上的当前 shell 中执行脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14744904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com