0

在一些软件的安装指南中,用户被告知运行这个

sudo ln -s /opt/local/somesoft/somsoft* /opt/local/bin

这个命令危险吗?是否应该阻止 /opt/local/bin 调用其他东西而不是它本身?

4

1 回答 1

1

这个命令做的事情很少

  • sudo 授予 'ln' 二进制文件的 root 权限
  • ln 被指示遍历所有匹配模式 /opt/local/somesoft/somsoft* 的文件
  • 对于每个这样的文件,它都会尝试在 /opt/local/bin 目录中创建符号链接
  • 这个创建的符号链接将与刚刚处理的文件同名

你的第一个问题是,危险吗?很可能不是,很少有事情可能出错

  • 你的 $PATH 环境包含一些奇怪的目录,所以不是调用 /usr/bin/ln (我相信这是最初的意图),你会被欺骗调用一些不同的可执行文件。例如,如果您的 PATH=.:/tmp:/usr/bin,则首先在当前目录中搜索“ln”,然后在 /tmp 中搜索,然后在 /usr/bin 中搜索。它以超级用户权限调用...
  • 没有像 /opt/local/somesoft/somsoft* 这样的文件。在这种情况下,ln 将创建符号链接“/opt/local/bin/somsoft*”(包括名称中的星号)。这可能不是你想要的
  • /opt/local/bin 已经包含与 /opt/local/somesoft/somsoft* 同名的文件。在这种情况下 ln 不会在那里创建新文件(是好是坏?这就是问题)
  • 你没有 /opt/local/bin 。在这种情况下,命令失败的方式有多种(取决于您是否有 /opt/local 目录以及有多少文件与模式 /opt/local/somesoft/somsoft* 匹配)

你的第二个问题没有多大意义。/opt/local/bin 是一个目录,目录不能“调用”任何东西。所以不能阻止这样做。如果你问是否应该在那里创建符号链接,我会说为什么不。该命令背后的整个想法是

  • 将 somesoft 安装到特殊目录中,这样您就不会污染 /usr/bin 或任何其他公共目录
  • 为了能够运行命令而无需每次都指定完整路径 /opt/local/somesoft/somsoft... 您可能希望在 /opt/local/bin 中创建符号链接。并确保您的 /opt/local/bin 在您的目录中。
于 2013-07-02T22:17:06.507 回答