因此,每次我尝试导航到目录时,它都会显示此消息,但当我导航到我的桌面目录时,它就是这样
答案1
看起来@steeldriver 是正确的,您的示例在 cd 之前有一些不可见的东西。空格是无害的,如果它只是一个空格,让我们考虑一下您的选择。
在你的终端里,你看到我所看到的东西了吗?
$ type cd
cd is a shell builtin
我不确定“shell 内置”是指来自 /bin/sh 或类似 /bin/bash 或 /bin/dash 的 shell 的功能。我的第一猜测是它来自 shell,而不是 sh。确保您的环境指定了 $SHELL。
$ echo $SHELL
/bin/bash
如果您在会话中乱动,无论是使用“export ...”之类的命令交互,还是通过运行脚本或编辑 .bashrc,都可能导致您看到的问题。请检查您的 SHELL 变量。
可能,您会看到一些合法的 $SHELL。确保输出中提及了当前存在的文件。
$ ls -la /bin/bash
-rwxr-xr-x 1 root root 1099016 May 16 06:35 /bin/bash
也许你看到了破折号或者别的东西。
你能打开一个新终端看看是否发生了同样的事情吗?每个终端都会启动自己的 shell,问题可能看起来不同,或者根本不出现。如果问题相同,则意味着问题出在你的配置中或 shell 文件本身中。
假设您确实安装了 bash 包或任何其他 shell,实际上,在该终端中启动一个新 shell(-l 表示登录 shell):
$ bash -l
之后的问题还一样吗?
如果失败,我会使用命令行安装/重新安装 shell 程序。我有 bash 和 dash:
$ dpkg -l | grep bash
ii bash
4.4-2ubuntu1.1 amd64 GNU Bourne Again SHell
$ dpkg -l | grep dash
ii dash
0.5.8-2.3ubuntu1 amd64 POSIX-compliant shell
在你的情况下,我会尝试重新安装
$ apt-get install --reinstall bash
或类似的东西。如果您损坏了 shell 文件,则此操作可能会在您注销并登录时修复它。
为什么要重新安装 dash?在 Ubuntu 中,尽管我将 BASH 作为 shell,但看起来 /sbin/sh 是由 dash 提供的:
$ dpkg -S /bin/sh
diversion by dash from: /bin/sh
diversion by dash to: /bin/sh.distrib
dash: /bin/sh
最后再说一句。如果有人试图入侵你的系统并控制它,他们可能会做的一件事就是尝试替换你的 shell。这也许可以解释你遇到的问题,尽管我承认提起这件事似乎有点夸张。