‘hhighlighter’包装器脚本提示未找到命令

‘hhighlighter’包装器脚本提示未找到命令

我从以下位置获取了包装脚本“hhighlighter”https://github.com/paoloantinori/hhighlighter这会为 stdout 中的任何内容着色。我按照安装 ack-grep 的说明进行操作,在 ~/.bashrc 中为 ack=ack-grep 创建别名,将 h() 函数放入 ~/.bashrc 中,在终端中输入时一切正常。但是,当在 bash 脚本中输入完全相同的命令时,系统提示未找到命令。我将在这里举例说明...

root@kali:~# echo "abcd" | h a b c d
abcd

以下是我的脚本

#!/bin/bash  
echo "abcd" | h a b c d

与输入的命令完全相同,但这是运行脚本时的输出

root@kali:~# ./test.sh
./test.sh: line 1: h: command not found

为什么直接在终端中输入时可以工作,而在 bash 脚本中输入完全相同的命令时却不行?

答案1

对我有帮助的解决方案是强制脚本以带有#!/bin/bash -i标题的交互模式运行。

高级 Bash 脚本指南警告关于奇怪的后果:

请注意,这可能会导致脚本行为不稳定或即使没有错误也会显示错误消息。

然而我还没观察到类似的事情。

答案2

~/.bashrc仅在交互式 bash 会话启动期间读取。

如果希望始终读取它,请将名称放在BASH_ENV环境变量中:

export BASH_ENV=$HOME/.bashrc

相关内容