如何让 cd shell-builtin 停止猜测?

如何让 cd shell-builtin 停止猜测?

例如:

$ ls -aF
./ ../ bin/
$ cd tin # with a tee, not bee
bin
$ pwd
/home/user/bin

换句话说,cd猜测我真正的意思是cd bin,并且成功地(嗯?)相应地更改当前目录。我没有发现这种行为记录在man bashBash 参考手册

我希望 Bash 产生一个错误,向标准错误写入一些信息,并保持当前目录不变如果没有与参数匹配的目录dir(占扩张)被发现。

供参考,

$ type cd
cd is a shell builtin
$ ps -p $$
PID TTY          TIME CMD
46959 pts/8    00:00:00 bash
$ bash --version
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$ hostnamectl
   Static hostname:
         Icon name: computer-server
           Chassis: server
        Machine ID:
           Boot ID: 
  Operating System: Red Hat Enterprise Linux
       CPE OS Name: cpe:/o:redhat:enterprise_linux:7.9:GA:server
            Kernel: Linux 3.10.0-1160.83.1.el7.x86_64
      Architecture: x86-64
$ #DELETED: Static hostname, Machine ID, Boot ID

答案1

命令的行为cd受 影响shopt。请参阅man bash,搜索:shopt。另请参阅内置商店在里面Bash 参考手册

特别是,问题中所示的行为与 一致shopt -s cdspell

我想清除所有影响的选项cd将会达到预期的(根据问题)效果。请参阅cd其中的描述Bourne Shell 内置函数或在“SHELL BUILTIN COMMANDS”下man bash

致谢

感谢一位未透露姓名的同事指出了我们系统的shopt设置cdspell,这也在之前的评论中得到了承认。

相关内容