bash - 更新后运行脚本仍然运行旧脚本(更新前的版本)
问题描述
我在 ~/bin 中有一个名为 a.sh 的脚本(这是我开始创建脚本的地方)。然后我创建了一个符号链接(仅称为 'a' - 不带引号)并将符号链接复制到 /usr/local/bin
当我在 ~/bin 中对 a.sh 进行更改时,将目录更改为 ~/ 并输入 'a' (不带引号)。shell 仍然运行旧脚本。
要运行带有更改的脚本,我必须输入 '. ~/bin/a.sh'(不带引号)。
我发现重新创建符号链接,然后将其复制到 /usr/local/bin 是可行的,但是每次我进行更改时都会很麻烦。
有没有办法告诉系统,我已经更新了脚本?
之前已经讨论过类似/相同的问题: 旧版本的脚本运行,除非使用“sh scriptname”调用
解决方案
您复制了文件,而不是符号链接。要复制符号链接,请将其告知cp
.
cp --no-dereference link dest
但通常,只是:
cp -d link dest
# or
cp -a link dest
将链接添加/usr/local/bin
到用户主目录内的位置~/bin
看起来很奇怪。如果脚本是用户本地的,只需添加~/bin
并PATH
在那里。如果脚本是系统全局的,则不要有两个带有混淆符号链接的脚本位置 - 考虑将脚本放在/usr/local/bin
. 考虑研究 GNU stow 和 chezmoi 以及其他管理软件。
推荐阅读
- mysql - MySQL游标不适用于日期变量
- python - Openpyxl 无法加载工作簿
- r - 在 R 中用 0 拟合 beta 分布
- keycloak - Keycloak accountDisableMessage 属性不起作用
- php - 未定义变量:posts(查看:/app/resources/views/bbs/index.blade.php)
- javascript - 当用户单击用户列时,在链接上添加弹出模式以打开
- email - 使用 Mail 和 AppleScript 转发选定电子邮件的问题
- lotus-notes - 读取“告诉”命令的响应
- .net-core - dotnet publish:清理外部输出目录
- php - 有没有办法获得用于成功交易的卡类型?