Linux

‘hhighlighter’ 包裝腳本說找不到命令

  • April 21, 2016

我從https://github.com/paoloantinori/hhighlighter獲得了包裝腳本“hhighlighter”,它可以在標準輸出中為您想要的任何內容著色。我按照關於安裝 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 腳本中具有完全相同的命令時卻不行?如果需要我的 ~/.bashrc 或需要其他任何東西來解決這個問題,請告訴我,它已經持續了 4 天而沒有弄清楚這一點。

問題是:當 bash 以非互動方式啟動時,它不會讀取~/.bashrc.

因此,您必須閱讀h()腳本。

如果你想在腳本中使用別名,那麼你必須

  1. 在腳本中啟用別名的使用shopt -s expand_aliases
  2. 在腳本中定義別名。

別名的替代方法是定義一個 shell 函式(在互動式和非互動式 shell 中的工作方式相同):

foo () {
 bar "$@"
}

但是,由於執行腳本的 shell 被重新初始化,因此無法將正在執行的 shell 中的別名或函式定義接管到腳本中。

引用自:https://unix.stackexchange.com/questions/169780