移动到另一个目录的可执行文件还能工作吗?

移动到另一个目录的可执行文件还能工作吗?

我想知道将可执行文件移动到与安装位置不同的目录是否会导致它无法工作?我记得在 Windows XP 下单击图标运行可执行文件时会出现这种情况。在 Linux 终端下,似乎只要正确指定路径,可执行文件仍然可以工作?谢谢澄清!问候!

答案1

只要可执行文件能够找到其依赖项(例如 Windows 上的其他 dll),它就会工作。如果由于某种原因(即它假定它们位于同一目录中)无法找到,则无法工作。

不幸的是,Windows 发出的错误消息并不总是最有帮助的,因此您可能无法找到所有所需的文件。

答案2

这完全取决于应用程序。

应用程序本身只需要找到它的依赖项,或者运行所需的 DLL 列表。它大部分时间都会在当前目录中查找这些内容,因此这通常不是问题。

最大的问题在于注册表。如果应用程序已将其安装位置写入注册表,则它可能会在运行时在旧目录中查找某些文件。

如果您安装了该应用程序,它也会存储在注册表中,并且从添加/删除程序中卸载将不再有效。

如果应用程序不使用注册表,则可以将其移动而不会产生任何后果。许多在闪存驱动器上运行的便携式应用程序都采用这种方法,因此可以根据需要进行移动或删除。

答案3

在 Linux(以及一般的 UNIX)下,大多数可执行文件都可以自由移动。它们通常会自动找到它们的依赖项...有时使用 ~/.*(“点文件”)...通常命名为 ~/.rc(其中 'rc' 最初代表“运行命令”,但可以被认为是“资源/配置”设置)。有时(越来越多)UNIX/Linux 软件包会创建一个 ~/.目录(例如~/.gnome/、~/.firefox/等等)。

通常,应用程序会检查 ~/.* 文件,然后查找 /etc/ 配置文件。它还可能在其他地方搜索(例如 /opt/etc/ 或 /usr/local/etc)。

此类程序也常常遵循环境设置...因此,您可以为它们export(Bourne 系列 shell) 或setenv(csh/tcsh) 设置适当的设置。当然,它们也常常使用命令行开关来指向任何配置文件或资源。

通常,最好参考程序的文档来了解文件和环境设置。通常,程序将允许命令行开关覆盖任何环境设置,覆盖任何 ~/.* 设置,覆盖任何 /etc/* 设置,而 /etc/* 设置可能会覆盖任何编译设置。然而,这只是一个松散的惯例。查看文档!

总体而言,UNIX/Linux 程序在管理资源位置方面远比 MS Windows 或旧版 MacOS 程序更可靠。通常没有不透明的“注册表”或“资源分支”来隐藏这些内容。

答案4

通常如此。如果有共享库,则可能也需要移动它们,或者设置路径以便可以找到它们,具体取决于您的操作系统。

相关内容