![명령에서 $()는 무엇입니까?](https://linux55.com/image/40722/%EB%AA%85%EB%A0%B9%EC%97%90%EC%84%9C%20%24()%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
$()
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
프로덕션 환경에서 절대 사용해서는 안 될 권한을 갖게 됩니다. ;)