$()
Linux 쉘 명령에는 무엇이 있습니까?
예를 들어:
chmod 777 $(pwd)
답변1
답변2
POSIX 또는 POSIX와 유사한 셸( ksh
, bash
, ash
, , zsh
, yash
...)에서는 다음과 같습니다. ``
내부에서 명령을 실행하고 이를 표준 출력으로 바꿉니다. 큰따옴표 안에 있지 않으면 $()
단어 분리 및 파일 이름 생성이 수행됩니다. $()
그러므로
chmod 777 $(pwd)
다음으로 교체해야 합니다:
chmod 777 "$(pwd)"
현재 작업 디렉터리 경로에서 단어 분할 및 파일 이름 생성을 방지합니다.
또는 더 좋습니다(디렉토리 이름이 변경된 경우 zsh와 같은 일부 셸에서는 제외).
chmod 777 "$PWD"
이후는 $PWD
POSIX 쉘의 현재 작업 디렉토리에 대한 경로를 보유하는 특수 변수입니다.
또는 더 나은 방법은 다음과 같습니다.
chmod 777 .
.
현재 디렉토리의 항목은 디렉토리 자체에 대한 하드 링크이기 때문 입니다.
답변3
이는 $()
주로 다른 명령 내에서 명령을 실행하는 데 사용됩니다.
chmod 777 $(pwd)
pwd
이 명령은 현재 작업 디렉터리를 제공합니다. 따라서 전체 프로세스가 실행되면 pwd의 출력은 pwd의 인수로서의 위치를 대체하고 chmod
결과적으로 현재 작업 디렉토리는 모두 777
프로덕션 환경에서 절대 사용해서는 안 될 권한을 갖게 됩니다. ;)