Linux
‘hhighlighter’ 包裝腳本說找不到命令
我從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()
腳本。如果你想在腳本中使用別名,那麼你必須
- 在腳本中啟用別名的使用
shopt -s expand_aliases
- 在腳本中定義別名。
別名的替代方法是定義一個 shell 函式(在互動式和非互動式 shell 中的工作方式相同):
foo () { bar "$@" }
但是,由於執行腳本的 shell 被重新初始化,因此無法將正在執行的 shell 中的別名或函式定義接管到腳本中。