스크립트를 실행할 때 현재 실행한 스크립트의 절대경로를 구해야 하는 경우가 있다.
절대경로를 구하는 명령어가 있는것 같지만 OS 국한적으로 그런 명령어를 가지고 있지않은 OS 또한 있다.
내가 만든 방법은 아래와 같다.
설명을 하자면,
먼저 스크립트를 실행한 이름으로 base name을 구하고,
./으로 실행한 스크립트 또는 이름으로 실행한 스크립트이면, 실행위치에서 pwd로 절대경로를 구했고,
상대경로로 실행하거나 경로에 링크가 걸려있다면, 실행 경로의 끝에 위치한 스크립트 이름만 제거하고,
그경로로 이동한 후 pwd로 절대경로를 구한 것이다.
FULL_PATH 변수를 찍어 보면 절대경로가 들어가 있는것을 볼 수 있다.
쉽게 만들지는 못했지만, 예전에 kldp에 질의도 하고해서 만든 결과로 정리 차원에서 글을 써본다.
절대경로를 구하는 명령어가 있는것 같지만 OS 국한적으로 그런 명령어를 가지고 있지않은 OS 또한 있다.
내가 만든 방법은 아래와 같다.
#!/bin/sh EXEC_FILE="$0" BASE_NAME=`basename "$EXEC_FILE"` if [ "$EXEC_FILE" = "./$BASE_NAME" ] || [ "$EXEC_FILE" = "$BASE_NAME" ]; then FULL_PATH=`pwd` else FULL_PATH=`echo "$EXEC_FILE" | sed 's/'"${BASE_NAME}"'$//'` cd "$FULL_PATH" > /dev/null 2>&1 FULL_PATH=`pwd` fi
설명을 하자면,
먼저 스크립트를 실행한 이름으로 base name을 구하고,
./으로 실행한 스크립트 또는 이름으로 실행한 스크립트이면, 실행위치에서 pwd로 절대경로를 구했고,
상대경로로 실행하거나 경로에 링크가 걸려있다면, 실행 경로의 끝에 위치한 스크립트 이름만 제거하고,
그경로로 이동한 후 pwd로 절대경로를 구한 것이다.
FULL_PATH 변수를 찍어 보면 절대경로가 들어가 있는것을 볼 수 있다.
쉽게 만들지는 못했지만, 예전에 kldp에 질의도 하고해서 만든 결과로 정리 차원에서 글을 써본다.
'형상관리 > 쉘' 카테고리의 다른 글
PowerShell에서 SHA256 값 얻기 (0) | 2017.12.22 |
---|---|
read 명령어 echo 끄기 (0) | 2011.11.22 |
본 쉘 프로그래밍에서 printf 명령어 (0) | 2009.10.22 |
find 명령어를 이용한 특수문자를 포함하는 파일이름 찾기 (0) | 2009.06.04 |