最近在WSL2上使用Oh-My-Zsh时,经常遇到了一个错误
compinit:503: no such file or directory: /usr/share/zsh/vendor-completions/_docker
尽管我没有在WSL2上安装Docker或启用Docker插件,但每次启动Zsh时都会出现错误消息。值得注意的是,我在Windows上安装了Docker。以下是问题及其解决方法的详细概述。
系统环境
操作系统:Ubuntu 22.04.3 LTS,运行在Windows 10 x86_64上
内核:5.15.133.1-microsoft-standard-WSL2
Zsh版本:5.8.1
终端模拟器:Windows终端
WSL版本:WSL2
compinit:503: no such file or directory: /usr/share/zsh/vendor-completions/_docker
❯ docker
The command 'docker' could not be found in this WSL 2 distro.
We recommend to activate the WSL integration in Docker Desktop settings.
For details about using Docker Desktop with WSL 2, visit:
https://docs.docker.com/go/wsl2/
❯ ll /usr/share/zsh/vendor-completions
total 160K
-rw-r--r-- 1 root root 2.4K Mar 11 2022 _bootctl
-rw-r--r-- 1 root root 9.4K Mar 11 2022 _busctl
-rw-r--r-- 1 root root 15K Nov 30 03:23 _curl
lrwxrwxrwx 1 root root 74 Dec 26 15:10 _docker -> /mnt/wsl/docker-desktop/cli-tools/usr/share/zsh/vendor-completions/_docker
-rw-r--r-- 1 root root 1.4K Apr 1 2023 _dpkg-parsechangelog
-rw-r--r-- 1 root root 2.8K Mar 11 2022 _hostnamectl
-rw-r--r-- 1 root root 108 Feb 17 2017 _j
-rw-r--r-- 1 root root 7.1K Mar 11 2022 _journalctl
-rw-r--r-- 1 root root 779 Mar 11 2022 _kernel-install
-rw-r--r-- 1 root root 3.7K Mar 11 2022 _localectl
-rw-r--r-- 1 root root 6.3K Mar 11 2022 _loginctl
-rw-r--r-- 1 root root 2.2K Mar 11 2022 _networkctl
-rw-r--r-- 1 root root 3.7K Mar 11 2022 _resolvectl
-rw-r--r-- 1 root root 128 Mar 11 2022 _sd_hosts_or_user_at_host
-rw-r--r-- 1 root root 306 Mar 11 2022 _sd_outputmodes
-rw-r--r-- 1 root root 263 Mar 11 2022 _sd_unit_files
-rw-r--r-- 1 root root 20K Aug 22 05:11 _systemctl
-rw-r--r-- 1 root root 3.8K Mar 11 2022 _systemd
-rw-r--r-- 1 root root 4.2K Mar 11 2022 _systemd-analyze
-rw-r--r-- 1 root root 633 Mar 11 2022 _systemd-delta
-rw-r--r-- 1 root root 1.2K Mar 11 2022 _systemd-inhibit
-rw-r--r-- 1 root root 285 Mar 11 2022 _systemd-path
-rw-r--r-- 1 root root 4.3K Mar 11 2022 _systemd-run
-rw-r--r-- 1 root root 744 Mar 11 2022 _systemd-tmpfiles
-rw-r--r-- 1 root root 2.1K Mar 11 2022 _timedatectl
-rw-r--r-- 1 root root 6.4K Mar 11 2022 _udevadm
❯ ll /mnt/wsl/docker-desktop/cli-tools/usr/share/zsh/vendor-completions/_docker
ls: cannot access '/mnt/wsl/docker-desktop/cli-tools/usr/share/zsh/vendor-completions/_docker': No such file or directory
实际上这段docker的错误描述已经给出解决方案,但是我没意识到,白白浪费了很多时间
在此WSL 2发行版中找不到命令’docker’。
我们建议在Docker Desktop设置中激活WSL集成。
到今天我终于反应过来,搜了一下docker在wsl中的使用,我发现问题源于Windows上Docker Desktop的安装。在安装过程中,会出现一个提示,其中包含诸如“启用WSL2引擎”之类的选项,默认情况下是选中的。但是安装的时候没有意识到这一点。安装会在Windows Subsystem for Linux(WSL)中创建符号链接,但要有效地使用Docker,还需要在WSL集成设置中启用Ubuntu,并选择“启用与其他发行版的集成”。