我docker-compose按照https://docs.docker.com/compose/install/上的说明安装在我的 Ubuntu 16.04 机器上,用于curl将二进制文件直接下载到/usr/local/bin/:
$ ls -lh /usr/local/bin/docker-compose
-rwxr-xr-x 1 root root 16M Jul 11 15:55 /usr/local/bin/docker-compose
Run Code Online (Sandbox Code Playgroud)
/usr/local/bin/ 在我的路径中:
$ echo $PATH
/home/me/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Run Code Online (Sandbox Code Playgroud)
请注意,它/usr/bin实际上是在 之前。
当我尝试检查它的版本时,我得到了一个与 PATH 相关的错误:
$ docker-compose --version
bash: /usr/bin/docker-compose: No such file or directory
Run Code Online (Sandbox Code Playgroud)
通过指定可执行文件的完整路径,我得到了正确的行为,
$ /usr/local/bin/docker-compose --version
Run Code Online (Sandbox Code Playgroud)
docker-compose 版本 1.24.0,构建 0aa59064
或通过使用sudo,
$ sudo docker-compose --version
docker-compose version 1.24.0, build 0aa59064
Run Code Online (Sandbox Code Playgroud)
为什么我不能跑$ docker-compose --version?为什么 Bash 会/usr/bin特别抱怨,什么时候它应该在/usr/local/bin.
可能与我之前docker-compose通过安装有关apt,但我已删除并清除了此软件包。
您已经在一处安装了 docker-compose。然后您将其删除并将其安装在另一个位置。
通过这种方式,您遇到了 bash 的优化,因为不必在每次键入命令时都搜索 $PATH,将结果缓存在内存中。路径哈希是一个哈希表,由 bash 维护,其中包含在运行命令时 shell 应在磁盘上查找可执行程序的位置。哈希表在明显使结果无效的事件(例如修改 $PATH)或使用内置hash命令时被清除。
当你再次执行 docker-compose 时,bash 只是试图从它上次找到它的地方获取它,只是它不再存在,所以你得到了那个错误消息。
要使 docker-compose 的哈希无效,请运行以下命令:
hash docker-compose
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4853 次 |
| 最近记录: |