长期使用cygwin,刚在一台新的Win10笔记本电脑上安装了cygwin64。 (我把包集合放在 D:\Tech\Cygwin 中,不管它值多少钱。不应该影响这个 AFAIK。)
大多数一切似乎都很好......除了:
过去,我从来没有遇到过首次安装问题。现在是否期望新用户手动配置 $PATH 等各种东西?
似乎没有人知道答案。我做了更多的功课并了解到:
# Add sbin folders if not already in path
if [ "${PATH/sbin}" == "${PATH}" ] ; then
PATH=${PATH}:/sbin:/usr/sbin
export PATH
echo Added sbin to path
fi
真的。
smartmontools
开发人员显然已经决定像 smartctl
这样的特权命令属于 /usr/sbin
.
这似乎符合文件系统标准,里面说
如果普通用户(不是系统管理员)将直接运行它,那么它必须放在“bin”目录之一中。
出于我尚未发现的原因,Cygwin 显然不保证
/sbin
和 /usr/sbin
在超级用户的 $PATH
中。这样的调整似乎暂时留给了最终用户。我会这样做:
$ cygstart --action=runas env PATH=$PATH:/sbin:/usr/sbin smartctl ...
或者,如果需要互动
$ cygstart --action=runas env PATH=$PATH:/sbin:/usr/sbin bash -i
$ smartctl ...
请注意,某些系统将 /bin 与 /usr/bin 和 /sbin/ 与 /usr/sbin 合并,只要 /usr/ 挂载得足够早,或者位于同一设备上。
例如,最近安装的 Ubuntu 在与 / 相同的设备上具有 /usr 使用符号链接合并
sbin
目录:
bin -> usr/bin
...
sbin -> usr/sbin
在最近的 Cygwin 中(截至今天),所有文件通常都在同一台设备上,但只完成了一半的合并:
/sbin
和/usr/sbin
不同/usr/bin/
和/bin
最终相同,如下:$ mount
C:/cygwin64/bin on /usr/bin type ntfs (binary,auto)
C:/cygwin64/lib on /usr/lib type ntfs (binary,auto)
C:/cygwin64 on / type ntfs (binary,auto)
C: on /cygdrive/c type ntfs (binary,posix=0,user,noumount,auto)
...
$ cygpath -w /bin /usr/bin
C:\cygwin64\bin
C:\cygwin64\bin
为什么会这样,我也还没弄明白
在后一种情况下,
/usr/bin
或/bin
中的一个就足够了$PATH
,而另一个是多余的。