删除 bash 中命令引用的损坏

删除 bash 中命令引用的损坏

如何在 bash 中恢复命令引用的损坏?

在 CentOS 7 服务器上,我正在安装 Docker 和 Docker Machine。安装需要手动重新设置 BIOS 选项,然后在安装过程中重新启动操作系统。起初,该docker-machine命令是通过 bash 找到的。但似乎 bash 的一些引用在重新启动期间已被破坏。因此,即使我重复运行下面的安装命令,下面用于安装 Docker Machine 并检查其版本的命令现在也会导致失败消息。

我正在按照设置 Docker Machine 的说明进行操作在这个链接

这是最终重新启动后的终端输出:

[root@localhost ~]# base=https://github.com/docker/machine/releases/download/v0.14.0 &&  
>   curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&  
>   sudo install /tmp/docker-machine /usr/local/bin/docker-machine
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current  
                                 Dload  Upload   Total   Spent    Left  Speed  
100   617    0   617    0     0    836      0 --:--:-- --:--:-- --:--:--   836
100 26.7M  100 26.7M    0     0  3481k      0  0:00:07  0:00:07 --:--:-- 5962k
[root@localhost ~]# docker-machine version
-bash: docker-machine: command not found
[root@localhost ~]#

是否有一些命令可以用来清理所有 bash 的引用,以便全新安装可以抛出有意义的错误,或者希望可以工作?或者有人可以建议一些诊断命令吗?

我希望有一个更优雅的解决方案,而不是重新安装主机操作系统并从头开始重新配置计算机中的所有内容。


用户建议:

根据@MichaelHomer的建议,我尝试了以下方法:

[root@localhost ~]# PATH=/usr/local/bin:$PATH
[root@localhost ~]#

根据@roaima的建议,我尝试了:

[root@localhost ~]# hash -r
[root@localhost ~]# ls -ld /usr/local/bin/docker-machine
-rwxr-xr-x. 1 root root 28034848 Apr 16 16:18 /usr/local/bin/docker-machine
[root@localhost ~]# echo "$PATH"
/usr/local/bin:/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64/bin:/root/bin
[root@localhost ~]#

根据 @arcsin 的建议,我输入:

[root@localhost ~]# file /usr/local/bin/docker-machine
/usr/local/bin/docker-machine: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped
[root@localhost ~]# /usr/local/bin/docker-machine version
docker-machine version 0.14.0, build 89b8332
[root@localhost ~]#

答案1

出于效率原因,在找到每个命令的位置bash维护一个目录列表。$PATH

如果您运行一个它找不到的命令然后添加它,您需要告诉bash它使其列表无效。

hash -r

相关内容