首页 > 解决方案 > 更新后运行脚本仍然运行旧脚本(更新前的版本)

问题描述

我在 ~/bin 中有一个名为 a.sh 的脚本(这是我开始创建脚本的地方)。然后我创建了一个符号链接(仅称为 'a' - 不带引号)并将符号链接复制到 /usr/local/bin

当我在 ~/bin 中对 a.sh 进行更改时,将目录更改为 ~/ 并输入 'a' (不带引号)。shell 仍然运行旧脚本。

要运行带有更改的脚本,我必须输入 '. ~/bin/a.sh'(不带引号)。

我发现重新创建符号链接,然后将其复制到 /usr/local/bin 是可行的,但是每次我进行更改时都会很麻烦。

有没有办法告诉系统,我已经更新了脚本?

之前已经讨论过类似/相同的问题: 旧版本的脚本运行,除非使用“sh scriptname”调用

标签: bashscriptingarch

解决方案


您复制了文件,而不是符号链接。要复制符号链接,请将其告知cp.

cp --no-dereference link dest

但通常,只是:

cp -d link dest
# or
cp -a link dest

将链接添加/usr/local/bin到用户主目录内的位置~/bin看起来很奇怪。如果脚本是用户本地的,只需添加~/binPATH在那里。如果脚本是系统全局的,则不要有两个带有混淆符号链接的脚本位置 - 考虑将脚本放在/usr/local/bin. 考虑研究 GNU stow 和 chezmoi 以及其他管理软件。


推荐阅读