경로 시작 부분에 "./"를 넣는 목적/이점은 무엇입니까? [복사]

경로 시작 부분에 "./"를 넣는 목적/이점은 무엇입니까? [복사]

./경로 앞에 (점선 슬래시)를 추가하면 어떤 이점이 있나요?

대부분의 경우 (및 ) cd ./home와 동일합니다 . 이 두 경로가 동일한 경로로 평가되지 않는 경우가 있습니까? 폴더나 파일 경로의 시작 부분에 있으면 장단점이 있나요?cd homecd ./././././home./

프로그램이나 스크립트 내부에서 구성 파일을 열고 싶다면 열려는 파일을 하드코딩해야 합니다.

resource/config.txt

또는

./resource/config.txt

POSIX(또는 일반적인 Unix 구현)는 이 두 경로를 여는 데 의미상 차이를 제공합니까?

답변1

이렇게 하는 데에는 적어도 두 가지 이유가 있습니다 ./something.

  1. 실행하고 싶은 프로그램이 있습니다. "test"나 "cat", "ps"처럼 불편하게 이름이 붙었습니다. 일반적으로 쉘은 환경 변수 디렉토리에서 프로그램 이름을 찾습니다 PATH. 를 실행하려면 test를 입력해야 합니다 ./test. 그렇지 않으면 /usr/bin/test이와 유사한 내용이 실행됩니다. 이것은 매우 혼란스러울 수 있습니다.

  2. .PATH파일 시스템을 탐색하는 동안 실수로 프로그램을 실행하는 것을 원하지 않기 때문에 환경 변수에 해당 변수가 없습니다 . 정말 나쁜 사람은 ls디렉토리 어딘가에 스크립트를 남겨둘 수도 있습니다. 파일에 .가 ls포함될 수 있습니다 rm -rf $HOME. PATH올바른 위치에 "."이 있으면 끔찍한 사람들이 당신을 속여 홈 디렉토리의 모든 것을 삭제하게 할 수 있습니다. 물론 의 마지막 항목으로 "."를 입력할 수 있지만 PATH"."의 경우도 처리할 수 있습니다. 문제를 일으킵니다 PATH. 따라서 실행 파일이 현재 작업 디렉터리에 있는 프로그램을 실행하려면 해당 파일 이름 앞에 "./"가 붙어야 합니다.

답변2

./실제로는 항상 현재 작업 디렉토리입니다. 그러나 ( 타당한 이유로) 일반적 으로 PATH../script.shscript.sh

답변3

vagrant@host:~$ pwd
/home/vagrant
vagrant@host:~$ mkdir foobar
vagrant@host:~$ mkdir foobar/~
vagrant@host:~$ cd foobar
vagrant@host:~/foobar$ cd ./~
vagrant@host:~/foobar/~$ pwd
/home/vagrant/foobar/~
vagrant@host:~/foobar/~$ cd ~
vagrant@host:~$ pwd
/home/vagrant
vagrant@host:~$ cd foobar
vagrant@host:~/foobar$ cd ~
vagrant@host:~$ pwd
/home/vagrant
vagrant@host:~$ 

@DopeGhoti @Wildcard와 다른 사람들이 지적했듯이,때때로자신이 속한 디렉터리와 목표가 무엇인지 매우 구체적으로 지정하는 것이 편리합니다. 그리고 ./구조는 ../이것을 제공합니다.

관련 정보