Я получил скрипт оболочки «hhighlighter» от https://github.com/paoloantinori/hhighlighter, который окрашивает все, что вы хотите в stdout. Я следовал инструкциям по установке ack-grep, создал псевдоним для ack = ack-grep в ~/.bashrc, поместил функцию 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?

2 ответа2

1

Решением, которое помогло мне, было заставить скрипт запускаться в интерактивном режиме с #!/bin/bash -i header.

Advanced Bash-Scripting Guide предупреждает о странных последствиях:

Имейте в виду, что это может привести к нестабильному поведению сценария или отображать сообщения об ошибках, даже если ошибок нет.

Однако я не наблюдал ничего подобного.

0

~/.bashrc читается только во время запуска интерактивного сеанса bash.

Если вы хотите, чтобы он всегда читался, поместите имя в переменную окружения BASH_ENV :

export BASH_ENV=$HOME/.bashrc

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .