所有文件在 cygwin 中都是可执行的吗?

所有文件在 cygwin 中都是可执行的吗?

看来 cygwin 认为所有文件都是可执行的:

/tmp> echo "echo abc" > a
/tmp> ls -l a
-rw-r--r-- 1 I063510 Domain Users 9 Apr  9 15:39 a
/tmp> ./a
abc
/tmp> cygcheck -c base-cygwin
Cygwin Package Information
Package              Version        Status
base-cygwin          3.8-1          OK

我确信这种行为最近有所改变。是否可以配置,以便不执行此类文件?

我甚至记得必须更改在 cygwin 内部创建的 .bat 文件的权限,以便可以从 Windows 命令提示符执行它,但我可能错了。

答案1

问题在于缺少 she-bang,因此文件由 shell 本身加载。
https://en.wikipedia.org/wiki/Shebang_%28Unix%29

$  echo 'echo abc' > a
$ ls -l a
-rw-r--r-- 1 marco Administrators 9 Apr 10 13:28 a
$ ./a
abc

$  echo '#!/bin/bash\recho abc' > a
$ ls -l a
-rw-r--r-- 1 marco Administrators 22 Apr 10 13:29 a
$ ./a
-bash: ./a: Permission denied

相关内容