Docker‘s “executable file not found in $PATH: unknown“ trying to run “cd“

当尝试在Docker容器中运行`cd`命令时,出现"executable file not found in $PATH: unknown"错误。此问题源于`cd`是POSIX shell的一个特殊内置命令,而非独立程序。Docker容器通常只运行一个进程,改变工作目录可能不适用。解决方法包括使用`docker run -w`选项指定工作目录,或者在Dockerfile中添加`WORKDIR`指令,或者启动一个shell包装器作为主要容器进程,但后者可能导致引用问题。该问题可能与环境变量和使用的不同系统镜像有关。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很熟悉的情况,又是莫名其妙好好的东西突然自己坏了,以前都好好的,最近突然冒出这个问题,在dockers容器外面输命令,容器就会报这个错,从stackoverflow上找到了解决办法

以前用的命令是

docker exec -it container ls

改用这个命令

docker exec -it container /bin/sh -c 'ls'

-it 去了也行,主要是/bin/bash 后面-c接命令

原因如下:

英文原文回答:

cd is a special built-in utility, in the language of the POSIX shell specification. It's something that changes the behavior of the running shell and not a standalone program. The error message means what it says: there is no /bin/cd or similar executable you can run.

Remember that a Docker container runs a single process, then exits, losing whatever state it has. It might not make sense for that single command to just change the container's working directory.

If you want to run a process inside a container but in a different working directory, you can use the docker run -w option

docker run -it \
  -w /workspace \
  cloudbuildtoolset:latest \
  the command you want to run

or, equivalently, add a WORKDIR directive to your Dockerfile.

You can also launch a shell wrapper as the main container process. This would be able to use built-in commands like cd, but it's more complex to use and can introduce quoting issues.

docker run -it cloudbuildtoolset:latest \
  /bin/sh -c 'cd /workspace && the command you want to run'

不过他这个解释的好像是cd这个命令的意义,没有细究为什么不能运行命令,我的理解是环境变量不一样,看网上回答什么系统镜像不一样,虽然我确实是一个Centos一个Ubuntu,但是我觉得不止于此,但难以细究

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值