1: Bad substitution path_curr=$( cd "$(dirname "${BASH_SOURCE[0]}")" && pwd);
时间: 2023-11-22 16:05:39 浏览: 36
这是一个 Bash 脚本中的命令,用于获取当前脚本的所在目录的绝对路径。具体来说,`${BASH_SOURCE[0]}` 表示当前脚本的文件名,`$(dirname "${BASH_SOURCE[0]}")` 表示当前脚本所在的目录名,`cd "$(dirname "${BASH_SOURCE[0]}")"` 表示切换到当前脚本所在的目录,`pwd` 表示获取当前目录的绝对路径。整个命令的作用是将当前工作目录切换到脚本所在的目录,并获取该目录的绝对路径,然后将其赋值给变量 `path_curr`。如果出现 `Bad substitution` 错误,可能是因为该命令在当前环境下无法正确执行,或者语法有误。
相关问题
1: Bad substitution path_curr=$( cd "$(dirname "${BASH_SOURCE[0]}")" && pwd);使用sudo运行出现异常
如果在使用 `sudo` 命令运行脚本时出现了 `Bad substitution` 错误,可能是因为在 `sudo` 环境下没有正确设置 Bash 解释器。可以尝试将脚本的第一行修改为 `#!/bin/bash`,并在使用 `sudo` 命令时加上 `-E` 选项,以保留当前用户的环境变量,例如:
```
sudo -E ./your_script.sh
```
另外,如果 `sudo` 命令执行时提示没有权限,可以尝试使用 `chmod` 命令修改脚本的权限:
```
chmod +x your_script.sh
```
这样就可以将脚本设置为可执行文件,从而避免权限不足的问题。
bash: --map_dir=${/apollo/modules/map/data/yinchuan}: bad substitution
这个错误提示是因为在你的命令中,`${/apollo/modules/map/data/yinchuan}` 这个路径没有正确的被解析。`${}` 是 Bash 中的一种变量替换语法,它可以用来获取变量的值或者执行命令并返回结果。在这里 `${/apollo/modules/map/data/yinchuan}` 并不是一个合法的变量名或者命令,所以 Bash 报错了。
你需要检查一下命令中这个路径的正确性。如果是一个固定的路径,可以直接写成绝对路径;如果是一个变量,需要先定义这个变量并且保证它有正确的值。