## 简介
如果在Ubuntu系统中,运行一些程序时出现`"PWD" variable is not set. Defaulting to a blank string.`,大概率是配置文件中使用`${PWD}`这类语法导致的。
<!-- more -->
## 问题原因
在Ubuntu系统中,执行严格的权限管理,一般你是无法使用 `root` 用户进行操作的,如果需要`root` 权限,大多也是使用 `sudo` 来执行。
> 大多数Linux系统中,`root`用户具有最高权限,也就是管理员权限。
所以我们大多数情况下使用的是一个普通用户,在Ubuntu中执行很多程序时,一般需要在执行的命令前加上 `sudo` ,来获取管理员权限去执行,如果此时执行的程序中有配置 `${PWD}` 相关参数,很可能会出现 `"PWD" variable is not set. Defaulting to a blank string.` 报错,这是因为系统不知道用什么权限去执行 `${PWD}` 命令,因为在普通用户和 `root` 用户下,执行 `${PWD}` 或得到不一样的值。
## 实例
以 `docker-compose.yml` 文件为例,如果你在Centos系统下,配置 `docker-compose.yaml` 可能出现如下配置:
```yaml
volumes:
# 日志文件映射
- ${PWD}/log:/var/log
```
这样的配置在 `Centos` 中大概率不会出错,因为很多用户使用 `Centos` 系统时,为了方便,都是直接使用 `root` 用户进行的操作。
但在 `Ubuntu` 系统下,很可能会报错。
### 修改
既然 `${PWD}` 报错,那么只能修改了,修改方式一般有两种:
1. 使用相对路径:`docker-compose.yaml`支持相对路径配置
```yaml
volumes:
# 日志文件映射
- ./log:/var/log
```
2. 使用绝对路径
```yaml
volumes:
# 日志文件映射
- /usr/local/app/log:/var/log
```