bash - 在 bash 中的命令之前设置变量
问题描述
有什么区别:
GIT_TRACE=1 git push
和
GIT_TRACE=1; git push
相同的行为不同,因为第一个在执行时真正输出跟踪信息,git push
因为它显然会检查是否设置了此类变量(环境?)。
解决方案
GIT_TRACE=1 git push
GIT_TRACE=1
被添加到git push
命令的环境中。变量赋值仅对该命令有效。它不会影响任何后续命令。
GIT_TRACE=1; git push
一个名为的shell 变量GIT_TRACE
设置为1
. Shell 变量不同于环境变量。子进程只能看到环境变量。他们看不到 shell 变量。这是一个微妙的区别。正因为如此,git push
看不到设置,也没有效果。
此外,与上述不同,该变量在脚本期间继续设置。
要使设置可见,您需要将其导出,将 shell 变量提升为环境变量。
export GIT_TRACE=1; git push
如果您不希望该变量影响任何其他命令,则可以在子 shell 中运行这两个命令。子shell 结束时,子shell 中的变量分配会丢失。
(export GIT_TRACE=1; git push)
当然,你没有理由这样做,因为GIT_TRACE=1 git push
它做的事情完全相同但更好(它不会派生子外壳)。
推荐阅读
- python - 在 PHP 变量中获取 Python 脚本输出
- reactjs - *.d.ts 在新机器上安装 npm 后的不同类型定义
- android - 将nestedscrollview滚动到textView的底部
- laravel - Laravel 8:尝试通过 JSON Get Testing 测试控制器方法,但找不到路由
- swift - Swift - 创建高频正弦波
- sql - 如何使用 SQL 查询与一列值在哪里?
- python - 通过正则表达式在python中过滤以某些字符(所有出现)结尾的文本
- android - 生成的 Moshi JsonAdapter 中不需要的换行符
- wordpress - Git忽略在WordPress主题目录中不起作用
- html - ng 类不适用于这种情况