![](/img/trans.png)
[英]“/bin/bash cd ~” results in “/bin/bash: cd: No such file or directory”, why?
[英]bash: cd: No such file or directory
我正在编写一个 bash 函数来跳转到我最后编辑的文件夹。 在我的示例中,最后编辑的文件夹名为“daniel”。
bash 函数看起来不错。
>>:~$ echo $(ls -d -1dt -- */ | head -n 1)
daniel/
我可以手动 cd 进入目录。
>>:~$ cd daniel
>>:~/daniel$
但是我无法使用 bash 函数 cd 到目录中。
>>:~$ cd $(ls -d -1dt -- */ | head -n 1)
bash: cd: daniel/: No such file or directory
原来有人在该服务器的 bashrc 中添加了alias ls=ls --color
。 一旦别名被删除,我的函数就可以工作。 – 丹尼尔·谭
当您输入不存在的路径时,通常会抛出此错误。 请参阅-bash: cd: Desktop: No such file or directory 。
但是 $(ls -d -1dt -- */ | head -n 1) 在输出中没有错误。 因此,原因一定是当时 sh 和 bash 的不同用法。
就我而言,当我使用 bash 访问文件夹时,我有一个 docker 容器出现该错误。 容器坏了,因为我在docker-compose up
之后强行关闭了它,但它不起作用。 之后,在现有容器上,我只能使用 sh,而不能使用 bash。 我发现这是因为OCI 运行时 exec failed: exec failed: container_linux.go:348: starting container process cause "exec: "bash": executable file not found in $PATH": unknown 。 我猜 bash 的加载时间晚于 sh,并且在容器开始的早期错误中,只有 sh 被加载。
这很合适,因为您在 sh 中,可以从 >> 中看到。 使用 sh,一切都会按预期进行。 但是表达式被bash解决了。 无论出于何种原因,这可能没有加载。
在 docker 中,使用 docker-compose,我也有类似的错误说sh: 1: cd: can't cd to /root/MYPROJECT
。 这可以通过使用在服务中安装所需的卷来解决
services:
host:
volumes:
- ~/MYPROJECT:/MYPROJECT # ~/path/on/host:/path/on/container
请参阅在 docker-compose 中安装卷。 它是如何完成的? 以及如何使用 docker-compose 挂载主机目录? 或官方文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.