gpt4 book ai didi

linux - 这两个用于运行 shell 脚本的命令有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:31:07 28 4
gpt4 key购买 nike

这里我有一个脚本,它在 Linux 中导出了一些必要的路径。运行此脚本后,我必须运行一些其他脚本。

我有两个脚本

1 import.sh =  importing paths 
2 main.sh = this script do something with HCI (use for Bluetooth purpose).

当我运行 ./import.sh 而不是 ./main.sh 时,它给出了错误。当我运行 时。 ./import.sh 然后 ./main.sh 然后它工作正常。

那么 ./import.sh 之间有什么区别。 ./import.sh?

如果我以 super 用户身份运行脚本会怎样?可能是。 ./ 以 super 用户身份运行脚本。

最佳答案

这两个调用之间的区别在于 ./import.sh 将 import.sh 作为程序执行,而 . ./import.sh 正在您的 shell 中评估它。

如果“import.sh”是一个 ELF 程序(编译后的二进制文件,而不是 shell 脚本),。 ./import.sh 将不起作用。

如果 import.sh 在顶部有一个 shebang(如 #!/bin/perl),如果您尝试这样做,您将遇到一个令人讨厌的惊喜和大量错误消息做。 ./import.sh - 除非 shebang 碰巧匹配你当前的 shell,在这种情况下它会意外地工作。或者,如果 Perl 代码以某种方式成为有效的 Bash 脚本,这似乎不太可能。

。 ./import.sh 等同于 source import.sh,并且不需要文件设置执行位(因为它由您已经运行的 shell 解释而不是生成通过 exec)。我认为这是您错误的根源。另一个区别是 ./import.sh 在当前 shell 而不是子 shell 中运行,因此任何未导出的环境变量都会影响您用于启动的 shell!

因此,它们实际上非常不同。你通常想要 ./import.sh 除非你知道你在做什么并且理解其中的区别。

关于linux - 这两个用于运行 shell 脚本的命令有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8981933/

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