Win10 上的最新 Cygwin:smartmontools(smartctl 等)位于 /usr/sbin - 但 PATH 中没有 */sbin 文件夹

问题描述 投票:0回答:2

长期使用cygwin,刚在一台新的Win10笔记本电脑上安装了cygwin64。 (我把包集合放在 D:\Tech\Cygwin 中,不管它值多少钱。不应该影响这个 AFAIK。)

大多数一切似乎都很好......除了:

  • 默认的全新安装路径(或安装包的扩充路径?)不包括 /sbin 或 /usr/sbin,即使有几个包在那里安装可执行文件(例如 smartctl 等)
    • 具体示例:安装smartmontools
    • smartctl.exe 进入 /usr/sbin
    • 然而 $PATH 不包括 /usr/sbin
  • "vi foo" 报错:E1187: Failed to source defaults.vim
    • 同样,vi 是默认 cygwin 安装的一部分
    • 然而,就当前版本而言,显然并不是所有需要的默认控制/配置文件都被正确放置。我还没有想出这个。

过去,我从来没有遇到过首次安装问题。现在是否期望新用户手动配置 $PATH 等各种东西?

installation path windows-10 cygwin
2个回答
0
投票

似乎没有人知道答案。我做了更多的功课并了解到:

  1. 安装给定的包是否会验证和更新 PATH 以合并该包的(甚至是默认的可执行文件)文件夹显然是随机的。
  2. 默认情况下,虽然几个“基本”类别的可执行文件位于 /sbin 和 /usr/sbin 中,但这些文件夹不在 $PATH 中。
  3. 没有为此报告错误。
  4. 这是我针对 $PATH 问题的最简单的解决方法。如果您希望 /sbin 或 /usr/sbin 中的任何内容位于您的 $PATH 中,请在您的 ~/.bashrc 顶部附近插入以下内容
# 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

0
投票

真的。

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
,而另一个是多余的。

© www.soinside.com 2019 - 2024. All rights reserved.