在什么情况下某些程序可能要求您在特定目录上运行它们?

在什么情况下某些程序可能要求您在特定目录上运行它们?

https://unix.stackexchange.com/a/76641/674

创建一个简短的 shell 脚本来运行此目录中的 wine 程序,即~/bin/textaloud

#!/bin/bash
cd "~/.wine/drive_c"
exec wine "~/.wine/drive_c/Program Files/TextAloud/TextAloudMP3.exe" "$@"

并赋予其执行权限。

chmod +x ~/bin/textaloud

上述脚本需要注意三点:

  • 路径cd是程序将要运行的位置(在哪个目录中)。某些程序可能要求您在特定目录中运行它们。如果您遇到问题,请在那里设置该目录(通常与可执行文件所在的位置相同)。在某些情况下您可能不需要这条线。

在什么情况下某些程序可能要求您在 Linux 中的特定目录中运行它们?

谢谢。

答案1

更改 CWD 可能不是实现此目的的唯一方法,但存档程序通常会提取到 CWD。

您可能还希望使程序不受重命名目录或更改作为路径参数一部分的符号链接的影响,并改用./路径。

您还可以通过使 CWD 成为卷的一部分来防止卸载卷。

答案2

如果程序需要在特定目录中启动,通常有两种可能的原因:

  • 该程序的配置包括非绝对路径名,并且当程序在该特定目录中启动时,它们只会指向正确的位置。

(如果程序是这样配置的,并且在启动实际程序之前没有努力确保目录自动正确设置,例如为其编写一个简单的启动脚本,那么您就是在自问错误。)

  • 该程序期望在其启动的目录中找到特定的内容,并将在其处理中使用它。该命令的make工作原理如下:如果运行它,它将期望在当前目录中找到名为Makefile或 的文件,如果某个文件比依赖它的文件新,则识别文件和要运行的命令之间的依赖关系。makefile除其他外,这使得开发人员可以节省时间,只重新编译大型程序中自上次构建以来已修改的部分。

(即使没有 Makefile,现代 GNUmake也会执行一些预设的基本任务,但与使用 Makefile 可以实现的功能相比,这是一个非常有限的功能集。)

相关内容