我在make文件中执行以下操作

pushd %dir_name%

我得到以下错误
/bin/sh : pushd : not found

有人可以告诉我为什么出现此错误吗?
我检查了$ PATH变量,它包含/bin,所以我不认为这会引起问题。

最佳答案

pushd是POSIX指定的Bourne Shell的bash增强。 pushd不能容易地实现为命令,因为当前工作目录是该进程的功能,子进程无法更改。 (假设的pushd命令可能会执行chdir(2)调用,然后启动一个新的shell,但是……它不是很有用。)pushd是一个内置的shell,就像cd一样。

因此,可以将脚本更改为以#!/bin/bash开头,或者将当前工作目录存储在变量中,进行工作,然后再更改回去。取决于您是否想要在非常简化的系统(例如Debian构建服务器)上运行的Shell脚本,或者是否总是需要bash很好。

09-04 11:54