Black Asked: 2018-06-26 06:26:39 +0800 CST2018-06-26 06:26:39 +0800 CST 2018-06-26 06:26:39 +0800 CST -bash: /bin/cd: No such file or directory - cd 后自动执行 ls 772 我不小心破坏了我的cd命令。 我试图在被调用ls后自动执行cd。 我发现一个帖子说我必须执行alias cd='/bin/cd && /bin/ls',但现在我得到-bash: /bin/cd: No such file or directory并且不能再更改目录了。 linux alias 3 个回答 Voted Best Answer Kusalananda 2018-06-26T06:34:15+08:002018-06-26T06:34:15+08:00 您的系统(像许多 Unix 系统一样)没有外部cd命令(至少不在该路径上)。即使它有一个,ls也会给你原始目录的目录列表。外部命令永远不能更改调用进程(您的 shell)的目录1。 从环境中删除别名unalias cd(并从您可能已将其添加到的任何 shell 初始化文件中删除其定义)。 使用 shell 函数,您可以让它像往常一样工作,如果成功,最后cd额外调用:lscd cd () { command cd "$@" && ls -lah } 或者, cd () { command cd "$@" && ls -lah; } 这将cd使用您提供给函数的相同命令行参数调用内置于您的 shell 中的命令。如果目录更改成功,ls则会运行。 该command命令停止 shell 递归地执行函数。 函数定义(如上所述)将进入您的 shell 的启动文件。与bash,这可能是~/.bashrc。然后,函数定义将在下一个新的交互式 shell 会话中处于活动状态。如果您希望它现在处于活动状态,则在交互式 shell 提示符处按原样执行函数定义,这将在您当前的交互式会话中定义它。 1在cd可用作外部命令的系统上,此命令也不会更改调用进程的目录。这种命令的唯一真正用途是提供 POSIX 合规性,并作为测试是否可以将目录更改为特定目录。 Black 2018-06-26T06:29:32+08:002018-06-26T06:29:32+08:00 我能够通过再次删除别名来解决它unalias cd Vlastimil Burián 2018-06-26T06:33:32+08:002018-06-26T06:33:32+08:00 发生这种情况是因为: $ type cd cd is a shell builtin
您的系统(像许多 Unix 系统一样)没有外部
cd
命令(至少不在该路径上)。即使它有一个,ls
也会给你原始目录的目录列表。外部命令永远不能更改调用进程(您的 shell)的目录1。从环境中删除别名
unalias cd
(并从您可能已将其添加到的任何 shell 初始化文件中删除其定义)。使用 shell 函数,您可以让它像往常一样工作,如果成功,最后
cd
额外调用:ls
cd
或者,
这将
cd
使用您提供给函数的相同命令行参数调用内置于您的 shell 中的命令。如果目录更改成功,ls
则会运行。该
command
命令停止 shell 递归地执行函数。函数定义(如上所述)将进入您的 shell 的启动文件。与
bash
,这可能是~/.bashrc
。然后,函数定义将在下一个新的交互式 shell 会话中处于活动状态。如果您希望它现在处于活动状态,则在交互式 shell 提示符处按原样执行函数定义,这将在您当前的交互式会话中定义它。1在
cd
可用作外部命令的系统上,此命令也不会更改调用进程的目录。这种命令的唯一真正用途是提供 POSIX 合规性,并作为测试是否可以将目录更改为特定目录。我能够通过再次删除别名来解决它
unalias cd
发生这种情况是因为: