Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 1차원 DP
- 2차원 dp
- 99클럽
- @Builder
- @Entity
- @GeneratedValue
- @GenericGenerator
- @NoargsConstructor
- @Query
- @Table
- @Transactional
- Actions
- Amazon EFS
- amazon fsx
- Android Studio
- ANSI SQL
- ApplicationEvent
- assertThat
- async/await
- AVG
- AWS
- Azure
- bind
- builder
- button
- c++
- c++ builder
- c03
- Callback
- case when
Archives
- Today
- Total
기록
[issue] 쉘스크립트에서는 상대경로 대신 절대경로를 사용하자. 본문
서론
배포용 스크립트를 작성하던 중에, 파일 경로를 상대경로로 지정해서 한참이나 고생했던 경험이 있습니다. 스크립트를 외부에서 실행할수 있도록 하려면, 절대경로를 사용하는 것이 적절합니다.
1. 문제상황
(1) 문제가 있는 스크립트 소스
아래는 상대경로를 사용하여 파일을 읽고 쓰는 쉘 스크립트의 예시입니다.
#!/bin/bash
# 상대경로로 파일 읽기
input_file="data.txt"
output_file="output.txt"
if [ -f "$input_file" ]; then
cat "$input_file" > "$output_file"
echo "파일이 성공적으로 복사되었습니다."
else
echo "파일이 존재하지 않습니다."
fi
(2) 문제상황의 설명
위 스크립트는 상대경로를 사용하여 파일을 읽고 쓰고 있습니다. 하지만 이 스크립트를 다른 디렉토리에서 실행하면 파일을 찾을 수 없어서 오류가 발생할 수 있습니다. 이는 상대경로가 현재 작업 디렉토리에 의존하기 때문입니다.
(3) 파일구조
/home/user/project/
├── data.txt
├── copyFile.sh
└── logs/
2. 개선된 상황
(1) 개선된 스크립트 소스
절대경로를 사용하도록 스크립트를 변경하면 이러한 문제를 해결할 수 있습니다.
#!/bin/bash
# 절대경로로 파일 읽기
input_file="/home/user/project/data.txt"
output_file="/home/user/project/output.txt"
if [ -f "$input_file" ]; then
cat "$input_file" > "$output_file"
echo "파일이 성공적으로 복사되었습니다."
else
echo "파일이 존재하지 않습니다."
fi
(2) 개선사항 설명
절대경로를 사용하면 스크립트가 어떤 디렉토리에서 실행되더라도 항상 올바른 파일을 참조할 수 있습니다. 이는 파일 경로가 명확하게 지정되기 때문입니다.
(3) 리눅스에서 파일의 절대경로 구하는 방법
리눅스에서 파일의 절대경로를 구하려면 `readlink` 명령어를 사용할 수 있습니다. 예를 들어, 현재 디렉토리에 있는 `file.txt`의 절대경로를 구하려면 다음과 같이 입력합니다.
readlink -f file.txt
이 명령어는 `file.txt`의 절대경로를 출력합니다. 이 값을 스크립트에 사용하여 절대경로를 지정할 수 있습니다.
'DevOps' 카테고리의 다른 글
CICD 파이프라인 구축기(2) - Verification Job과 Secrets 관리 (0) | 2024.09.15 |
---|---|
CICD 파이프라인 구축기(1) - 브런치 전략과 GITACTION (0) | 2024.09.02 |
배포자동화: 배포스크립트 작성 (0) | 2024.03.25 |
[issue] .Ds_store 파일 관리하기 (0) | 2024.02.26 |
[issue] AWS-EC2: 연결성 검사에 실패했습니다, CPU 100% 점유 (0) | 2024.02.13 |
Comments