我在make文件中执行以下操作
pushd %dir_name%我得到了下面的错误
/bin/sh : pushd : not found有人能告诉我为什么会出现这个错误吗?我检查了我的$PATH变量,它包含/bin,所以我不认为这会导致问题。
发布于 2011-03-04 19:26:08
这是因为pushd是bash中的一个内置函数。因此它与PATH变量无关,而且/bin/sh ( make默认使用它)也不支持它。您可以通过设置SHELL来更改它(尽管它不会直接工作(test1))。
相反,您可以通过bash -c "..."运行所有命令。这将使命令(包括pushd/popd )在bash环境(test2)中运行。
SHELL = /bin/bash
test1:
@echo before
@pwd
@pushd /tmp
@echo in /tmp
@pwd
@popd
@echo after
@pwd
test2:
@/bin/bash -c "echo before;\
pwd; \
pushd /tmp; \
echo in /tmp; \
pwd; \
popd; \
echo after; \
pwd;"当运行make test1和make test2时,它提供了以下内容:
prompt>make test1
before
/download/2011/03_mar
make: pushd: Command not found
make: *** [test1] Error 127
prompt>make test2
before
/download/2011/03_mar
/tmp /download/2011/03_mar
in /tmp
/tmp
/download/2011/03_mar
after
/download/2011/03_mar
prompt>对于test1,即使将bash用作shell,规则中的每个命令/行都是单独运行的,因此pushd命令在与popd不同的shell中运行。
发布于 2019-10-10 02:49:58
sudo dpkg-reconfigure dash 然后选择no。
发布于 2011-03-04 19:26:18
您的shell (/bin/sh)正在尝试查找'pushd‘。但是它找不到它,因为'pushd','popd‘和其他类似的命令都是内置在bash中的。
使用Bash (/bin/bash)启动脚本,而不是像现在这样使用Sh,它将会工作
https://stackoverflow.com/questions/5193048
复制相似问题