Linux_Creating commands

명령어를 만들어 보기 전, 명령어가 어떠한 원리로 실행되는지 알아야 할 필요가 있다.

'echo $PATH'를 통해 알아볼 수 있다.

':'를 기준으로 나와있는 경로에 사용자가 입력한 명령어가 있는지 확인한 후, 없다면 다음 경로에서 다시 탐색한다.

만약 내가 'ls' 명령어를 입력했다고 하자. 그렇다면 위 사진에 나온 경로처럼

① /usr/local/sbin 폴더에서 탐색한 후, 'ls'명령어가 없다면,

②/usr/local/bin 폴더에서 탐색한다. 그곳에서 'ls'가 없다면,

③/usr/sbin 폴더에서 탐색한다. 이곳에 'ls' 명령어가 있다면 이곳에서 해당 파일을 찾아 실행한다.

이러한 원리로 쉘에서 명령어가 동작하게 된다. 

 

하지만 '$PATH' 경로를 보면 모두 /home 디렉토리를 거치지 않고 바로 시스템 폴더에서만 탐색한다.

그렇다면 어떻게 해야 /home 디렉토리도 탐색하여 명령어를 찾아서 실행할 수 있도록 할까?

 

'$PAHT' 경로에 새로운 경로를 넣고 싶다면 아래의 사진을 읽어보면 된다.

'less .profile'을 입력하여 .profile의 내용을 읽어본다.

/.profile 폴더에서 '$PATH'의 경로를 수정할 수 있는지에 대한 여부를 확인할 수 있다.

읽어보면 /.profile을 실행시키면, /home/bin 디렉토리 경로를 '$PAHT' 경로에 넣어준다.

 

리눅스는 이렇게 /.profile 파일을 통해 'source .profile'을 하면 /home/bin 경로를 탐색 경로에 추가하여 주지만,

만약에 사용하는 서버에 그러한 것이 기본값으로 설정되어 있지 않다면, 

/bashrc 폴더에 위 스크립트를 작성해주면 잘 동작한다.

 

위처럼 실행하기 위해 /home 디렉토리에 /bin 폴더를 만들고 나만의 커멘드를 작성해 보았다.

쉘 명령어 스크립트를 작성할 때에는 이게 명령어인지 쉘에게 알려주기 위해 '#!/bin/bash'를 맨위에 작성해주어야 한다.

위 작업만 하고 나서 'hi' 커멘드를 치면 해당 명령어를 찾을 수 없다고 뜬다. 하지만 위에서 확인한 것처럼

'source .profile'을 통해 '$PAHT' 경로에 /home/bin 폴더를 탐색 경로로 추가해준 후, 내가 만든 'hi' 명령어를

입력해보면, 다른 결과값으로 "명령어는 찾았지만, 권한이 거부되었다" 라는 문구가 출력된다.

 

실제로

위 사진을 보면 /home/juwon/bin 경로가 탐색경로 파일에 추가된 것을 확인할 수 있다.

 

권한이 거부되는 이유를 확인해 보면,

위처럼 실행 권한이 없다는 것을 알 수 있다. 그러기에 'chmod' 명령어를 사용하여 실행권한을 부여하고

실행을 하면,

내가 만든 'hi' 명령어가 잘 실행되는 것을 확인할 수 있다.

 

 

♠만약 내가 만든 명령어가 파이썬 언어로 코딩되어 있다면, 'which' 명령어를 활용하여 파이썬 언어의 위치를 확인하고,

만약 위치가 '/usr/bin/python' 이라면

명령어 스크립트를 작성할 때, '#!/usr/bin/python' 이라고 가장먼저 작성하여,

쉘에게 내가 제작한 명령어가 파이썬으로 제작되어 있다는 것을 알려주어야 한다.

이 작업을 'Shebang' 이라고 부른다.

 

'curl'이라는 APA를 가져와 사용할 수 있는 커멘드 유틸리를 다운받아서

날씨를 받아오는 api를 통해 나만의 날씨를 알려주는 'weather' 명령어를 제작해보았다.

'Linux' 카테고리의 다른 글

Linux_Cron  (1) 2024.04.01
Linux_About Enviroment  (0) 2024.03.27
Linux_About Permission  (0) 2024.03.25
Linux_About Grep  (0) 2024.03.21
Linux_Find Excercise  (0) 2024.03.20