MS 도스와 다르게 리눅스는 파일을 실행할 때 꼭 앞에 [b:2s4odotm]"./"[/b:2s4odotm]을 붙여줍니다.
처음에는 많이 어색합니다.
[b:2s4odotm]"."[/b:2s4odotm] 은 자신의 현재 디렉토리를 뜻합니다. 점이 두개면 ("…") 바로 위 상위 디렉토리를 뜻합니다.
MS 도스와 똑 같고 경로지정 문자만 다릅니다. ( / 와 \ )
왜 불편하게 꼭 실행파일 앞에 "./"을 붙여주는지 꼭 필요한 것인지
한번쯤은 의문을 가져 보셨을 겁니다.
결론부터 말하자면 리눅스는 MS도스와 같이 현재 디렉토리를 경로(PATH)에 넣지
않았기 때문입니다.
경로란 내가 명령을 내렸을 경우 찾아 다니는 디렉토리입니다.
echo $PATH 하면 자신의 경로가 나타납니다.
[list:2s4odotm][b:2s4odotm]$ echo $PATH
/home/myhome/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games[/b:2s4odotm][/list:u:2s4odotm]
즉 ls를 입력하면 /home/myhome/bin 디렉토리를 찾아 ls가 있나 보고 없으면
다음 경로인 usr/local/bin 디렉토리를 뒤지게 됩니다.
이 일을 bash라는 shell이 해 주는 것입니다. (도스의 command.com)
ls는 /bin 디렉토리에 존재하므로 bash가 ls를 찾게 됩니다.
그리하여 ls는 "./" 없이 바로 실행이 되는 것입니다.
모든 파일 실행시 "./"없이 실행시키고 싶다면 자신의 홈 디렉토리 아래
[b:2s4odotm].bashrc[/b:2s4odotm] 파일 첫 줄에 다음을 추가하면 됩니다.
[list:2s4odotm][b:2s4odotm]export PATH="./:$PATH"[/b:2s4odotm][/list:u:2s4odotm]
그러면 다음부터 "./" 없이 모든 명렁어가 사용 가능합니다.
편리하겠죠?
내 아닙니다. 리눅스는 이 현재 경로를 일부러 빼 놓았습니다.
이유는 편리함보다 더 중요한 보안의 문제가 있기 때문입니다.
나쁜 해커들이 현재 경로의 파일을 읽을 수 있다는 점을 악용할 수 있기 때문에
일부러 빼 놓은 것입니다.
"나는 혼자 쓰는데 무슨 문제야?" 할 수 있겠지만
리눅스는 기본적으로 여러 사람이 같이 쓰는 운영체제라고 생각하기 때문에
조금 불편하시더라도 꼭 절대경로를 이용하는 습관을 들이는 것이 좋습니다.
파일 카피도 마찬가지입니다.
[list:2s4odotm][b:2s4odotm]$ cp original/* target/[/b:2s4odotm]
보다는
[b:2s4odotm]$ cp ./original/* ./target/[/b:2s4odotm]
이런식으로 표현해 주셔야 합니다.[/list:u:2s4odotm]
보다 정확하고 안전함을 위해서 편리함을 양보하는 것입니다.
[b:2s4odotm]리눅스는 까칠해…[/b:2s4odotm]