OS X 文件系统不区分大小写会损坏 vlc 命令

OS X 文件系统不区分大小写会损坏 vlc 命令

vlc -I rc从 OS X 终端 bash 提示符返回错误:

VLC media player 2.2.3 Weatherwax (revision 2.2.3-3-g0777f11) [0000000100233778] core libvlc error: No plugins found! Check your VLC installation.

VLC -I rc 成功打开远程 VLC 会话,正如预期的那样。为什么文件系统的大小写不敏感不使 vlc 和 VLC 等效命令?什么可能导致系统为这两个(理论上相同的)命令返回不同的输出?

which vlc返回:/Applications/VLC.app/Contents/MacOS/vlc

which VLC返回 /Applications/VLC.app/Contents/MacOS/VLC

ls -la /Applications/VLC.app/Contents/MacOS/回报 drwxr-xr-x@ 8 jay admin 272 May 4 06:52 . drwxr-xr-x@ 8 jay admin 272 May 4 06:52 .. -rwxr-xr-x@ 1 jay admin 28656 May 4 06:52 VLC drwxr-xr-x@ 2 jay admin 68 May 4 06:52 bin drwxr-xr-x@ 3 jay admin 102 May 4 06:52 include drwxr-xr-x@ 6 jay admin 204 May 4 06:52 lib drwxr-xr-x@ 303 jay admin 10302 May 4 06:52 plugins drwxr-xr-x@ 5 jay admin 170 May 4 06:52 share

echo $PATH返回此相关条目:

/Applications/VLC.app/Contents/MacOS

不优雅的是,我通过运行暂时纠正了行为: alias vlc='VLC'但我想了解到底发生了什么。有想法吗?

更新:

type VLC返回: VLC is /Applications/VLC.app/Contents/MacOS/VLC

type vlc返回: vlc is hashed (/Applications/VLC.app/Contents/MacOS/vlc)

清除哈希值hash -r然后重新运行 vlc会重复错误的执行。

答案1

这只是猜测,但我怀疑这个问题更多地与 Mac OS X 中的应用程序调用及其工作方式有关which。正如其他人评论的那样,文件系统使事情不区分大小写。which有点傻;它只会显示可执行二进制文件在 shell 执行路径中的位置。不管出于什么原因,你都/Applications在那里,但这并不正确——OS X 中的许多应用程序可能会调用应用程序的 .app“包”中的底层二进制文件,但该事件显然是由系统对关联的 .app 文件的识别触发的。 plist 文件以及构成整个应用程序的其他文件。

因此,当您使用 时which,它会向您显示终端将尝试执行的二进制文件,但这样做会忽略使其在您的环境中工作所需的所有关联应用程序库和配置文件。请注意,这不适用于 MacPorts 中的命令 /usr/bin或由 MacPorts 构建的任何内容。因此,作为替代方案,您也可以通过外部软件包系统尝试 vlc(或 Mplayer!),但随后您可能会在 X 中打开它,而不是使用该应用程序。

如果您想在 Mac OS X 的命令行上使用任何 .app 包,我建议您按照列出的说明进行操作这里,并使用 Mac 相当通用的open命令。

答案2

根据名为“的 VLC wiki 页面”命令行”:

在终端窗口中输入

../VLC.app/Contents/MacOS/VLC options

我感到困惑的原因是,VLC 文档中显示的许多运行 VLC 的示例如下所示:

vlc -I rc

因此我认为我应该vlc在终端中输入。感谢本页的评论者,我现在了解到,尽管 OS X 中的文件系统不区分大小写,但特定应用程序(在本例中为 VLC)中的内部代码可能确实区分大小写。 VLC 文档清楚地说明了其在 OS X 中的要求。

从 OS X 命令行调用 VLC 远程接口的正确方法是:

/Applications/VLC.app/Contents/MacOS/VLC -I rc

相关内容