我想设置 core.pager 以管理换行文本的长行。为了做到这一点,我使用这个命令:
$ GIT_PAGER="fold -sw $COLUMNS" git log
我试图设置 core.pager,但 Bash 过早地评估 $COLUMNS:
$ git config core.pager "fold -sw $COLUMNS"
$ grep pager .git/config
pager = fold -sw 80
如果我试图逃避 $COLUMNS,我会得到:
$ git config core.pager "fold -sw \$COLUMNS"
$ grep pager .git/config
pager = fold -sw $COLUMNS
$ LC_ALL=en_US git log
fold: option requires an argument -- 'w'
Try 'fold --help' for more information.
如果我尝试使用,sh -c
我会得到:
$ git config core.pager 'sh -c fold -sw $COLUMNS'
$ grep pager .git/config
pager = sh -c fold -sw $COLUMNS
..但它没有正确评估 $COLUMNS (它是静态的)。
我怎样才能获得与我在 core.pager 中设置的第一个命令相同的行为?
编辑:正如尼克巴斯汀所说git config core.pager "fold -sw \$COLUMNS"
,应该可以工作,但可能我对子进程有问题。