안녕하세요!
A 부터 Z 까지 공유하는 SA2Z(Share A to Z) 블로그 입니다.
오늘은 리눅스 쉘스크립트 활용하다 발생한 내용에 대해 공유드리려합니다.!
# 상황
# 방안 : 1. 단축명령어 -> 2. 심볼릭링크
# 결론
# 상황
딥러닝 알고리즘을 활용하려 github을 방황하던중 특정 알고리즘을 테스트하려고 하다보니, 친절하게도 github관리자가 리눅스 기반일 경우 필요한 다운,설치,설정들을 쉘스크립트로 작성하여 배포를 했는데요.
여기서 쉘스크립트란, 리눅스기반에서 특정 프로그램을 사용하려면 커맨드라인을 통해 다운,설치,설정을 해야하는데 이러한 명령어들을 정리해서 한번에 실행시킬 수 있도록 작성한 파일로, .sh 확장자를갖는 파일을 이야기합니다.
에러가 발생한 내용은,
제 리눅스에는 python3이 설치되어 있고, 파이썬파일을 실행시키려면 "python3 main.py"와 같이 메인 명령어인 python3를 실행해야 하는데
쉘스크립트파일내용에는 '3' 이 빠져있어서 명령어가 없다는 에러가 발생했습니다. 쉘스크립트 내 명령어 예시 "python main.py" >> " python command not found"
여기서 제생각에는 python을 쳐도 python3를 실행할 수 있도록 하면되겠다는 생각에 단축명령어 등록을 시도해봤는데 에러가 개선되지 않아서 찾다보니, 디렉토리 차원에서의 심볼릭 링크를 걸어주면 특정 명령어(특정파일실행)가 배쉬 스크립트파일에서도 호환이 되는것을 확인했습니다~!
# 시도
* 1차 시도 : 단축명령어 : -> 모든사용자에 대해 적용되는 터미널 라이브러리 추가
python이라는 명령어 사용시 python3를 실행시키도록
/etc/bash.bashrc 파일 내부에 단축명령어를 추가
# 단축명령어 등록 : alias [단축명령]='[실제명령어]'
$ echo "alias python='python3' " >> /etc/bash.bashrc
# 라이브러리 업데이트
$ source /etc/bash.bashrc
* 2차 시도 : python3 관련 폴더가 python 폴더에 들어있는 것처럼 가상의 링크생성
# 폴더심볼릭 링크 : ln -s [실제경로] [가상경로]
$ ln -s /usr/usr/bin/python /usr/bin/python3
# 링크연결 확인
$ ls -l /usr/bin/python*
# 결론
쉘스크립트가 필요한 명령어를 등록하려면,
단축명령어 등록의 경우, 리눅스사용자의 편의를 위한 기능이므로 시스템적인 적용이나연결이 되지 않는 것으로 이해하면 쉽게 받아들일 수 있을 것 같습니다.
따라서 특정명령어도 특정경로의 특정파일을 실행하는 것과 같으므로, 타겟팅되는 파일이나 경로로 심볼릭링크를 연결하여 시스템디렉토리상에서 관련파일이 있는 것처럼 링크를 걸어주는게 호환이 잘 되는 것으로 보이네요!