"No such file or directory" 在 link 路径中
"No such file or directory" while in link path
编译时,我总是将构建放在一个单独的目录中。例如:
mkdir build
cd ./build
(cd ..; ./bootstrap)
../configure
make
因为我有足够的 RAM,所以我的目标是在 TMPFS 上编译。
脚本获取项目名称,将其用作在 $XDG_RUNTIME_DIR/build
中创建的目录的名称,最后链接它。
# setup-build.sh
#!/usr/bin/bash
set -e
my_project_name=$(basename $(pwd))
my_project_build_dir="$XDG_RUNTIME_DIR/build/$my_project_name"
mkdir -p $my_project_build_dir
ln -s "$my_project_build_dir" "$(pwd)/build"
脚本运行没有问题。但是,当我 cd ./build; ../configure
它 returns 一个错误:bash: ../configure: No such file or directory
。该文件肯定存在,但 Bash 找不到它!
我将脚本修改为:
#!/usr/bin/bash
set -e
my_project_src_dir="$(pwd)"
my_project_name="$(basename $(pwd))"
my_project_build_dir="$XDG_RUNTIME_DIR/build/$my_project_name"
mkdir -p "$my_project_build_dir"
ln -s "$my_project_build_dir" "$(pwd)/build"
cd "$my_project_build_dir"
echo "$my_project_src_dir" > "./project-src-dir.txt"
要编译我必须输入 cd ./build; $(cat ./project-src-dir.txt)/configure; make
。不过,这会导致 Bash 完全中断。正如我无法使用此方法从 $my_project_src_dir
中使用 TAB 键完成文件名,但参数的 TAB 键完成工作正常。如果需要autoconf
:(cd $(cat ./project-src-dir.txt); ./bootstrap)
。如果有人有任何其他想法,我仍然希望能够做到 ../configure
,尽管现在必须这样做。
编辑: 必须将 my_project_name="$(basename '$my_project_src_dir')
更改为 my_project_name="$(basename $(pwd))"
,因为它从字面上理解 '$my_project_src_dir'
。
编译时,我总是将构建放在一个单独的目录中。例如:
mkdir build
cd ./build
(cd ..; ./bootstrap)
../configure
make
因为我有足够的 RAM,所以我的目标是在 TMPFS 上编译。
脚本获取项目名称,将其用作在 $XDG_RUNTIME_DIR/build
中创建的目录的名称,最后链接它。
# setup-build.sh
#!/usr/bin/bash
set -e
my_project_name=$(basename $(pwd))
my_project_build_dir="$XDG_RUNTIME_DIR/build/$my_project_name"
mkdir -p $my_project_build_dir
ln -s "$my_project_build_dir" "$(pwd)/build"
脚本运行没有问题。但是,当我 cd ./build; ../configure
它 returns 一个错误:bash: ../configure: No such file or directory
。该文件肯定存在,但 Bash 找不到它!
我将脚本修改为:
#!/usr/bin/bash
set -e
my_project_src_dir="$(pwd)"
my_project_name="$(basename $(pwd))"
my_project_build_dir="$XDG_RUNTIME_DIR/build/$my_project_name"
mkdir -p "$my_project_build_dir"
ln -s "$my_project_build_dir" "$(pwd)/build"
cd "$my_project_build_dir"
echo "$my_project_src_dir" > "./project-src-dir.txt"
要编译我必须输入 cd ./build; $(cat ./project-src-dir.txt)/configure; make
。不过,这会导致 Bash 完全中断。正如我无法使用此方法从 $my_project_src_dir
中使用 TAB 键完成文件名,但参数的 TAB 键完成工作正常。如果需要autoconf
:(cd $(cat ./project-src-dir.txt); ./bootstrap)
。如果有人有任何其他想法,我仍然希望能够做到 ../configure
,尽管现在必须这样做。
编辑: 必须将 my_project_name="$(basename '$my_project_src_dir')
更改为 my_project_name="$(basename $(pwd))"
,因为它从字面上理解 '$my_project_src_dir'
。