我必须在 RHEL 上从源代码安装 git。安装后,/usr/local/bin/git
尝试该命令时会显示 git 命令。此 whereis
路径也可用$PATH
。
当我输入 git 时,它仍然显示“未找到命令”。如何解决这个问题?
编辑:各种命令的输出
$type git
type: Command not found.
$which git
git: Command not found.
$ls -l /usr/local/bin/git
-rwxr-xr-x 112 root users 5851488 Mar 15 20:07 /usr/local/bin/git
$whereis git
git: /usr/local/bin/git
$echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
编辑:它现在可以工作,但不知道为什么
我断开了 telnet 连接并在几分钟前再次登录,发现 git 命令可以工作。我不确定是什么导致它开始工作。这很令人困惑。
答案1
从错误消息来看,您正在使用 (t)csh。在您的问题中提及它会有所帮助,特别是当您显示$
为提示符时,这通常是 Bourne 提示符,而不是 csh 提示符。
type
是 Bourne 风格的内置 shell。它在csh 中不存在。当您运行时type git
,它会告诉您type
未找到该命令。
许多 shell 将有关搜索路径中的命令位置的信息保存在缓存中。我不知道是否有任何版本的 csh 缓存否定查找,但似乎你的版本确实如此。运行命令rehash
刷新缓存。当您启动一个新的 shell 实例时,它有一个新的缓存,因此不记得git
之前不存在。
答案2
确保,如这个线程,你的 shell 与你应该得到的 shell 没有改变:
我刚刚发现我的 shell 已更改为 csh 并且导致了问题。
[root@localhost ~]# grep ^"$USER" /etc/passwd
root:x:0:0:root:/root:/bin/csh
我把它改成bash,问题就解决了!
[root@localhost ~]# type export
export is a shell builtin
这可以解释为什么您会收到“ type: Command not found.
”错误消息。
我尝试了这些命令:
[root@localhost ~]# csh
[root@localhost ~]# type export
type: Command not found.
[root@localhost ~]# bash
[root@localhost ~]# type export
export is a shell builtin
[root@localhost ~]# grep ^"$USER" /etc/passwd
root:x:0:0:root:/root:/bin/bash
答案3
最可能的原因是你有正确的PATH
但不正确的LD_LIBRARY_PATH
。
最新的git
可执行文件是动态链接的二进制文件。当您按照安装说明进行操作时,它可能会将库(.so
文件)放置在 中/usr/local/lib
,您需要将此路径添加到您的LD_LIBRARY_PATH
.尝试一下,然后运行 git:
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib
git
如果这不起作用,您能否提供ldd /usr/local/bin/git
.谢谢。
PS:如果解决方案有效,您需要将 LD_LIBRARY_PATH 行添加到您的.bash_profile