Bash 的源命令无法处理来自互联网的 curl 文件

标签 bash shell url

我正在尝试使用 curl 从 Internet 获取脚本文件,如下所示:source <( curl url ); echo done ,我看到的是“完成”在 curl 甚至开始下载文件之前得到回显!

这是实际的命令和输出:

-bash-3.2# source <( curl --insecure https://raw.github.com/gurjeet/pg_dev_env/master/.bashrc ) ; echo done
done
-bash-3.2# % Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2833 100 2833 0 0 6746 0 --:--:-- --:--:-- --:--:-- 0

我不太担心在任何事情之前或之后回显“完成”,我特别担心为什么 source 命令不会读取脚本并对其执行操作!

此命令在我的 LinuxMint 的 bash 上按预期工作,但在 CentOS 服务器的 bash 上不工作!

最佳答案

起初,我没有注意到您使用的是 Bash 3.2。该版本不会源自进程替换,但更高版本(例如 Bash 4)会。

你可以保存文件并做一个普通的来源:

source /tmp/del

(使用您评论中的文件)

或者,您可以使用 /dev/stdin 以及此处的字符串和带引号的命令替换:

source /dev/stdin <<< "$(curl --insecure https://raw.github.com/gurjeet/pg_dev_env/master/.bashrc)"; echo done

关于Bash 的源命令无法处理来自互联网的 curl 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10520605/

相关文章:

macos - 用于在文件中设置屏幕分辨率值的 Shell 脚本

linux - mv 包含来自 shell 脚本的空格的文件

spring - 白标签错误页面只需输入 URL 即可?

html - 绕过 mailto/href/url 字符限制

mysql - 我可以在 BASH 中获得基本 MySQL 命令的标准输出吗?

python - 如何运行使用 subprocess.call 的同一 Python 脚本的多个实例

bash - Jenkins 没有显示从 .bash_profile 中设置的环境

mysql - 从 Bash 脚本中的 CSV 文件中删除括号

arrays - 在 Bash 脚本中比较数组中的字符串

CSS 有时会加载相对于页面的 URL