./
경로 앞에 (점선 슬래시)를 추가하면 어떤 이점이 있나요?
대부분의 경우 (및 ) cd ./home
와 동일합니다 . 이 두 경로가 동일한 경로로 평가되지 않는 경우가 있습니까? 폴더나 파일 경로의 시작 부분에 있으면 장단점이 있나요?cd home
cd ./././././home
./
프로그램이나 스크립트 내부에서 구성 파일을 열고 싶다면 열려는 파일을 하드코딩해야 합니다.
resource/config.txt
또는
./resource/config.txt
POSIX(또는 일반적인 Unix 구현)는 이 두 경로를 여는 데 의미상 차이를 제공합니까?
답변1
이렇게 하는 데에는 적어도 두 가지 이유가 있습니다 ./something
.
실행하고 싶은 프로그램이 있습니다. "test"나 "cat", "ps"처럼 불편하게 이름이 붙었습니다. 일반적으로 쉘은 환경 변수 디렉토리에서 프로그램 이름을 찾습니다
PATH
. 를 실행하려면test
를 입력해야 합니다./test
. 그렇지 않으면/usr/bin/test
이와 유사한 내용이 실행됩니다. 이것은 매우 혼란스러울 수 있습니다..
PATH
파일 시스템을 탐색하는 동안 실수로 프로그램을 실행하는 것을 원하지 않기 때문에 환경 변수에 해당 변수가 없습니다 . 정말 나쁜 사람은ls
디렉토리 어딘가에 스크립트를 남겨둘 수도 있습니다. 파일에 .가ls
포함될 수 있습니다rm -rf $HOME
.PATH
올바른 위치에 "."이 있으면 끔찍한 사람들이 당신을 속여 홈 디렉토리의 모든 것을 삭제하게 할 수 있습니다. 물론 의 마지막 항목으로 "."를 입력할 수 있지만PATH
"."의 경우도 처리할 수 있습니다. 문제를 일으킵니다PATH
. 따라서 실행 파일이 현재 작업 디렉터리에 있는 프로그램을 실행하려면 해당 파일 이름 앞에 "./"가 붙어야 합니다.
답변2
./
실제로는 항상 현재 작업 디렉토리입니다. 그러나 ( 타당한 이유로) 일반적 으로 PATH
../script.sh
script.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와 다른 사람들이 지적했듯이,때때로자신이 속한 디렉터리와 목표가 무엇인지 매우 구체적으로 지정하는 것이 편리합니다. 그리고 ./
구조는 ../
이것을 제공합니다.