让我先写一个快速的 Makefile 作为展示:
#!/bin/make -f
folders := $(shell find -mindepth 1 -maxdepth 1 -type d -print)
make_dir:
@mkdir -p "test0"
pwd_test:
@cd "test0" && pwd
@pwd
pwd_all:
@for f in $(folders); do \
cd "$${f}" && pwd; \
pwd; \
cd ..; \
done
先做make make_dir
然后看看不同的结果:
➜ so make pwd_test
/data/cache/tmp/so/test0
/data/cache/tmp/so
➜ so make pwd_all
/data/cache/tmp/so/test0
/data/cache/tmp/so/test0
您会看到在 for 循环中必须执行cd ..
. 显然,现在该命令没有子进程生成cd X && pwd
,而通常情况下是这样。这种行为是特定于制造还是特定于我的外壳?