小编XJD*_*HDR的帖子

阻止 git 将非错误写入 stderr

我有一个脚本,用于自动同步各种远程 git 存储库。我试图用我的脚本做的一件事是从每个命令中捕获 stderr 的输出,并将所有这些错误写入一个文本文件,然后在脚本完成后通过电子邮件发送给我。这将提醒我需要解决的任何问题。不过,我在以下两行中遇到了问题:

{
    git fetch --prune-tags github-fetch master
    git push github master 
} 2> '/tmp/stderr-contents-sync_git_repositories.txt'
Run Code Online (Sandbox Code Playgroud)

问题是该git fetch行正在将以下内容写入 stderr:

From https://github.com/XJDHDR/xjdhdr-random-code.wiki
 * branch            master     -> FETCH_HEAD
   13af304..333d602  master     -> github/master
Run Code Online (Sandbox Code Playgroud)

git pull条线是这样写的:

To ssh://github.com/XJDHDR/xjdhdr-random-code.wiki.git
   333d602..da65970  master -> master
Run Code Online (Sandbox Code Playgroud)

我的问题是这些都不是错误,每次运行脚本时都会通过电子邮件发送。我想知道是否有可能阻止 git 将这些非错误写入 stderr 或从 stderr 输出中过滤出这些类型的消息,同时保留真正的错误。

git bash stderr

11
推荐指数
1
解决办法
1381
查看次数

将 PATH 环境变量导入到使用 cron 启动的 Bash 脚本中

创建 Bash 脚本时,我总是在开头有一行定义PATH环境变量。我最近发现这并不能使脚本非常可移植,因为PATH不同版本的 Linux 的变量是不同的(在我的例子中,我将脚本从 Arch Linux 移动到 Ubuntu 并收到错误,因为各种可执行文件不在同一位置)。

是否可以将PATH登录 shell 定义的环境变量复制到当前的 Bash 脚本中?


编辑: 我发现我的问题引起了一些混乱,导致一些人认为我想PATH用 bash 脚本更改登录 shell 的环境变量,这与我想要的完全相反。

这是我目前在我的 Bash 脚本之一顶部的内容:

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
# Test if an internet connection is present
wget -O /dev/null google.com
Run Code Online (Sandbox Code Playgroud)

我想将第二行替换为将登录 shell复制脚本环境中的内容:PATH

#!/bin/bash
PATH=$(command that copies value of PATH from login shell)
# Test if an internet connection is present
wget -O /dev/null google.com
Run Code Online (Sandbox Code Playgroud)

编辑2:很抱歉我的重大遗漏。我忘了提及,相关脚本正在通过 cron 按计划运行。Cron …

linux bash cron path

3
推荐指数
1
解决办法
4613
查看次数

标签 统计

bash ×2

cron ×1

git ×1

linux ×1

path ×1

stderr ×1