gpt4 book ai didi

bash - 我的 bash 脚本中嵌套了 `source` 命令?

转载 作者:行者123 更新时间:2023-11-29 09:00:23 26 4
gpt4 key购买 nike

我有以下设置

└── modules
├── main.sh
├── major.sh
├── sub-modules
│   └── minor.sh
  • 并且我已将 /modules 的路径添加到 $PATH。

所有.sh:

source major.sh

主要.sh:

source sub-module/minor.sh

但是当我运行它时我得到:

-bash: /sub-module/minor.sh: No such file or directory

最佳答案

是的。这就是 ./source 运算符的工作方式。

来自spec :

The shell shall execute commands from the file in the current environment.

If file does not contain a <slash>, the shell shall use the search path specified by PATH to find the directory containing file. Unlike normal command search, however, the file searched for by the dot utility need not be executable. If no readable file is found, a non-interactive shell shall abort; an interactive shell shall write a diagnostic message to standard error, but this condition shall not be considered a syntax error.

因此,当您使用 source file.sh 时,shell 在 $PATH 中搜索,但是当您使用 source dir/file.sh 时, $PATH 查找被跳过,dir 被假定为相对于当前目录。

要执行此类操作(在 main.shmajor.sh 内部),您可以使用 Can a Bash script tell what directory it's stored in?找到合适的绝对路径来使用。

对于一般用途,您需要将它们全部粘贴到 $PATHsource 从 absolute/等。路径。

关于bash - 我的 bash 脚本中嵌套了 `source` 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33400269/

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