我目前正在使用Java开发跨平台应用程序(Windows,Mac OS X,Linux)并在Windows上构建项目。在构建过程中,我构建了一个用于Linux的shell脚本,以及#34; wrap"可执行的jar文件。
我按如下方式设置shell脚本的可执行位:
File script = new File("run.sh");
script.setExecutable(true);
但是当将run.sh文件传输到Linux时,我总是得到以下权限:
-rw-r--r-- 1 salocinx salocinx 120 2014-08-20 20:21 run.sh
有谁知道如何将x-bit从Windows保存到Linux?
答案 0 :(得分:2)
您的文件传输程序需要保留权限选项。我不认为你会找到一个。您可以在unix框上运行程序来更改文件权限,也可以运行find
命令,如
find . -name "*.sh" -exec chmod a+x {} \;
或者您可以尝试设置umask
,
umask u+x
或者(如果你正在使用cygwin),你可以使用tar
和
tar cfp file.tar <scripts>
请注意p
是保留权限。
答案 1 :(得分:1)
setExecutable
在Windows上没有做任何事情,如果失败则返回false,你可以查看。
Windows文件系统没有可执行权限的概念。
传输到Linux后的权限文件取决于您用于传输它们的程序,但通常它们将是600或644.要解决此问题,您必须在类Unix操作系统下设置可执行位在合适的文件系统上。