在 Linux 中解压档案时修改 $PATH

在 Linux 中解压档案时修改 $PATH

假设我有一个 tar.bz2 存档,其中包含一些包含二进制文件和一些辅助文件的目录。
当用户解压它时,他必须从结果目录中启动二进制文件,如下所示:./binary123,但我希望此当前路径自动添加到$PATH变量(解压时),以便用户只需执行即可binary123

有没有什么方法可以实现这个目的?

事实上,我需要一些后期脚本功能来解压档案。

答案1

否 – '.tar' 档案是只是一个文件档案,仅此而已。tar不是软件包安装程序;它不会将文件放在 /usr/bin 等文件中,除非您要求它从字面上将整个档案提取到那里。

一般而言,如果某个工具可能被欺骗而将文件放置在指定目标目录之外,并且../../../usr/bin默认情况下不允许这样的路径,则现在会被视为安全问题。(不过,GNU tar 中有一个允许它们的选项。)

此外,在许多系统上,$PATH 默认不包含任何用户可写位置 - 必须先对其进行修改(或以 root 身份进行安装)。没有通用方法可以将内容添加到 $PATH - 您需要考虑许多不同的 shell 和登录环境,并且用户仍需要注销才能应用更改。

最后,将可执行文件添加到 $PATH(或运行提取后脚本)的功能只会招致滥用。虽然这种功能完全是程序包管理器应用程序所期望的(例如,如果您运行“npm i -g”或“cabal install”),但对于普通的旧文件归档器来说,这是完全出乎意料的。

(最有可能的是,如果得到 tar 的支持,那么就没有人会使用 tar 来提取文件 - 他们会使用一些替代的“safetar”,而你又会回到原来的问题。)

您应该创建一个实际的 deb/rpm 包。这些包实际上是要安装到 $PATH 中。

相关内容