我的组织有一个有效的组策略,只允许可执行程序驻留在Program Files(或Program Files X86)目录下。显然,普通用户不能写这些目录。我可以访问本地管理员权限,因此如果需要,我可以在那里安装。但是当然将整个cygwin树放在那里是没有意义的,因为用户需要能够写入/ home,/ tmp等等。我想我可以用链接做一些事情,也许安装到c:\ cygwin,然后只移动Program Files下的/ bin目录并创建一个硬链接?
有没有人遇到类似的情况并想出一个优雅的解决方案?这是Win 7 Enterprise。
答案 0 :(得分:1)
在Cygwin 1.7.34之前,解决这些问题需要相当多的箍跳,¹但现在很容易:
如果您尚未安装Cygwin,请执行此操作.²
如果您已经安装了Cygwin,并且您在1.7.34之前开始使用Cygwin版本,请移开/etc/passwd
和/etc/group
,然后升级到当前版本。
启动Cygwin终端。
在您喜欢的文本编辑器中打开Cygwin的/etc/nsswitch.conf
。添加如下所示的行:
db_home: /%H
就是这样!当您下次重新启动Cygwin时,它会将您的Windows配置文件目录视为您的Cygwin主目录。这意味着您将有一些有用的子文件夹,如Desktop
和Downloads
作为子文件夹,匹配OS X和许多桌面Linux的工作方式。
有些人可能不希望将这两个目录视为等效目录。您可以选择任何您喜欢的路径方案。例如,您可以将其更改为/cygdrive/c/Users/%U/cygwin
,以将您的Cygwin主文件夹放入Windows配置文件目录的cygwin
子目录中。
Cygwin的这个新功能非常强大且can do a lot more than I show here。例如,如果您愿意,可以通过AD更改Cygwin用户主目录。有关详细信息,请参阅该文档。
您可能还想重新排列Cygwin路径方案的其他一些元素。您可以通过编辑Cygwin's /etc/fstab
文件来完成此操作。您可能希望将/tmp
,/usr/tmp
和/var/tmp
移动到非管理员用户可以写入的目录中:
c:/tmp /tmp ntfs auto 0 0
c:/tmp /usr/tmp ntfs auto 0 0
c:/tmp /var/tmp ntfs auto 0 0
这将允许您以管理员身份安装(以及稍后更新)Cygwin,同时仍让非特权用户运行Cygwin。这使得Cygwin更像Linux或Unix。由于Cygwin软件包存储库中的大多数软件都来自该世界,因此您可以指望它在这种方案下正常运行。
<强>脚注:强>
first version of this answer告诉您如何使用旧版本的Cygwin执行相同的操作。
Cygwin并不关心您安装它的位置,因此如果默认设置不起作用,请随时更改。一些想法:
C:\Program Files\Cygwin
C:\Users\jeremy\Cygwin
D:\cygwin
Cygwin将记住您在后续更新中的选择。
如果您不将这些文件移开,则会干扰我们上面构建的解决方案。 Cygwin的这部分很复杂,值得a whole section in the Cygwin user manual。暗示。 :)
默认情况下,Cygwin会安装Vim文本编辑器的精简版本。
如果您不喜欢vi
,Cygwin软件包存储库中还有许多其他文本编辑器。
如果您 ,如vi
,我建议您安装完整版的Vim,然后将alias vi=vim
添加到~/.bashrc
。
您还可以使用本机Windows GUI文本编辑器。 Cygwin的/etc/nsswitch.conf
解析器似乎可以处理DOS行结尾。
Cygwin DLL正在从%HOMEDRIVE%
和%HOMEPATH%
环境变量构建此路径,然后将其转换为POSIX格式。