例如:
$ ls -aF
./ ../ bin/
$ cd tin # with a tee, not bee
bin
$ pwd
/home/user/bin
换句话说,cd
猜测我真正的意思是cd bin
,并且成功地(嗯?)相应地更改当前目录。我没有发现这种行为记录在man bash
或Bash 参考手册。
我希望 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
,这也在之前的评论中得到了承认。