chmod는 minGW64에서는 작동하지 않지만 Cygwin에서는 작동합니까?

chmod는 minGW64에서는 작동하지 않지만 Cygwin에서는 작동합니까?

win10에서 일부 파일 권한을 변경해야 합니다. cygwin에서는 이 명령을 실행할 수 있지만 git bash minGW64에서는 작동하지 않습니다. 이유를 설명해 줄 수 있는 사람이 있습니까?

Cygwin 터미널의 결과:

$ chmod 777 testfile
$ ls -l
total 0
-rwxrwxrwx 1 Jon Domain Users 0 Nov  1 11:57 testfile

하지만 mingw64에서는:

$ touch test
-rw-r--r-- 1 jon 1049089    0 Nov  1 12:17  test
$ chmod 777 test
$ ll
-rw-r--r-- 1 jon 1049089    0 Nov  1 12:17  test

chmod를 사용하면 오류 메시지도 표시되지 않습니다.

chmod가 제대로 작동하도록 문제를 해결하려면 어떻게 해야 합니까?

답변1

Cygwin은 Windows의 더 복잡한 ACL을 사용하여 POSIX 기본 권한을 에뮬레이션하려고 시도합니다. 밍웨이는 그렇지 않았다.

그러나 옵션이 없는 것은 아닙니다. ~에서Cygwin 문서(둘 다에 영향을 미침):

.exe특정 확장자( , , )로 .com끝나는 파일은 .lnk실행 가능한 것으로 간주됩니다. 처음 두 문자가 " #!", " MZ" 또는 " :\n"인 파일도 실행 가능한 것으로 간주됩니다.

:옵션은 원할 경우 파일에 대해서도 이 작업을 수행할 수 있음을 의미합니다..bat

편집: 이것이 git bash를 사용하고 있다는 사실을 놓쳤습니다. 이것이 git 저장소라면 chmod를 사용할 필요가 없으며 대신 원하는 것을 git에 직접 알릴 수 있습니다.

git update-index --chmod=+x setupscript.sh

답변2

이것은 MinGW에서 작업하는 방법에 대한 질문에 정확하게 대답하지는 않지만 chmod(그렇지는 않습니다) 출력에 표시할 올바른 권한 비트를 얻고 ls입력 후 실행 파일의 자동 완성을 활성화합니다../<탭>.

그러므로 만일

  • 파일은 수정될 수 있으며,
  • 문제의 실행 파일은 인터프리터에 의해 실행됩니다.

파일의 첫 번째 줄에 적절한 shebang을 추가하세요.MinGW는 자동으로 실행 가능한 것으로 간주합니다.

예를 들어, 아래 표시된 파일에 대해 다음과 같은 권한을 얻습니다. 특정 파일 확장자가 필요하지 않습니다.

$ ll
total 3
-rwxr-xr-x 1 user 197121 47 Oct 13 07:14 abc*
-rw-r--r-- 1 user 197121 43 Oct 13 07:14 def
-rwxr-xr-x 1 user 197121 49 Oct 13 07:16 ghi*

문서 내용:

알파벳:

#! /bin/sh
echo I show as an executable.

정의:

echo I do NOT show as executable, though `./def` will run me.

운이 좋은:

#! /c/Python39/python
print("MinGW sees me as executable too.")

관련 정보