스크립트에는 하드 코딩 된 상대 경로가 있습니다. 나는 그들에게 대본의 위치에 친척이되기를 바란다.bash 프로그램에서 경로 처리를 제대로 만드는 방법은 무엇입니까?
다른 프로그램 (cmake)이 필요로하는 스크립트는 현재 디렉토리를 변경해야합니다.
스크립트는 인수 (호출자와 관련이있을 수 있음)를 인수로 취하여 해당 프로그램에 전달하므로 비연 관화되어야합니다.
질문 인라인 있습니다
#!/bin/sh
# First arg should be Release or Debug
# TODO test for that.
if test -n "$1"; then # BTW how to test whether $1 is Debug or Release?
BUILD_TYPE="$1"
else
BUILD_TYPE="Release"
fi
# Set install prefix to current directory, unless second argument is given.
if test -n "$2"; then
INSTALL_PREFIX="$2" # How to derelativize this path argument?
else
INSTALL_PREFIX=bin # How to make this path relative to script location?
fi
# Make build directory and do cmake, make, make install.
mkdir -p build/${BUILD_TYPE} && # How to make this path relative to script location?
cd build/${BUILD_TYPE} &&
cmake -D CMAKE_BUILD_TYPE=${BUILD_TYPE} \
-D CMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \ # Possible relative to caller current directory.
../../ && # Relative to scrip position.
make -j4 &&
make install
는 일반적인 문제인가 아니면 표준이 아닌 방법으로 일을하고 있어요? 스크립트의 상단 (제 1 주석이 아닌 라인 #!
줄 이후)
에서
SCRIPT_DIR="$(dirname $0)"
ORIGINAL_DIR="$(pwd)"
넣어
스크립트를 다시 만들 것을 요청하지 않습니다. 올바른 방법으로 가이드를 작성하기 만하면됩니다. –