현재 디렉터리를 나타내는 점 문자는 언제 생략할 수 있나요?

현재 디렉터리를 나타내는 점 문자는 언제 생략할 수 있나요?

디렉토리에 액세스하기 위해 현재 디렉토리를 나타내기 위해 점을 사용해야 합니까, 아니면 파일에만 사용해야 합니까?

예를 들어, 현재 디렉터리가 디렉터리와 파일을 foo포함하고 있다면 언제 점 문자를 생략할 수 있나요?barbaz.txt

./bar
./baz.txt

답변1

파일 경로가 필요한 경우, ./foo쓰기 를 사용할 수 있는 foo곳은 몇 군데뿐입니다 ../foo

./foo쓰기는 예상되는 경로가 반드시 경로는 아니지만 검색 경로에서 찾을 수 있는 파일 이름일 때 유용합니다. 가장 일반적인 상황은 실행 가능한 명령을 호출할 때입니다. 나열된 디렉토리에서 실행 가능한 프로그램 검색PATH바꾸다, 그러나 이 조회는 주어진 명령 이름에 슬래시가 포함되지 않은 경우에만 수행됩니다. 따라서 PATH(보통 )에 있는 명령을 ls호출하면 현재 디렉토리에서 실행 가능한 프로그램이 호출됩니다. 보다 일반적으로 쓰기는 이라는 이름의 셸 별칭, 함수 또는 내장 기능도 무시합니다 .ls/bin/ls./lsls./foofoo

접두사의 또 다른 용도 ./는 특정 특수 문자로 시작하는 파일 이름과 관련된 문제를 방지하는 것입니다. 특히 파일 이름을 명령에 인수로 전달할 때 대부분의 경우 명령 -은 로 시작하는 경우 잘못 해석된 -옵션 . 그러나 이는 상대 경로(즉, 다음으로 시작하지 않음)인 경우에만 작동합니다 . 파일 이름을 보호하는 또 다른 보다 일반적인 방법은 파일 이름을 명령줄에 배치하는 것입니다. ( 일반적으로 뒤에 오는 내용이 옵션이 아닌 인수임을 나타냅니다.) (그러나 이것이 특정 경우에 항상 작동하는 것은 아닙니다. 그렇다면 많은 명령이 다음을 의미합니다. "표준 입력"). 이 주제에 대해서는 다음을 참조하십시오."./$filename""$filename"-$filename/--mycommand -- "$filename"--$filename-공백이나 기타 특수 문자 때문에 쉘 스크립트가 멈추는 이유는 무엇입니까?그리고bash/POSIX 쉘에서 변수를 인용하는 것을 잊어버리는 보안 위험

답변2

글쎄, 원한다면 폴더의 점 문자를 생략할 수 있지만 둘 다 작동합니다.

cd ./bar

또는

cd bar

동일하지만 두 번째 것이 더 편리하다는 데 동의할 것입니다.

파일을 실행하려면 bar.txt(즉, 파일을 실행할 수 있음 chmod 755) ./ 지시어를 사용해야 합니다.

./bar.txt스크립트를 실행합니다

bar.txt아무것도하지 마세요

cat bar.txt아니면 cat ./bar.txt같은 일을 할 것입니다.

도움이 되었기를 바랍니다 :)

편집: 스크립트를 실행하는 데 ./가 필요한 이유에 대해 자세히 알고 싶다면 다음 단계를 따르세요.https://stackoverflow.com/questions/6331075/why-do-you-need-dot-slash-before-script-name-to-run-it-in-bash

Unix에서는 일반적으로 현재 디렉터리가 $PATH에 없기 때문입니다. 명령을 입력하면 쉘은 PATH 변수에 지정된 >와 같은 디렉토리 목록을 찾습니다. 현재 디렉터리가 이 목록에 없습니다.

(@cnicutar)

관련 정보