「hhighlighter」ラッパースクリプトにコマンドが見つかりませんでした。

「hhighlighter」ラッパースクリプトにコマンドが見つかりませんでした。

ラッパースクリプト「hhighlighter」を以下から入手した。https://github.com/paoloantinori/hhighlighter標準出力に希望の色を指定します。 ack-grep のインストール手順に従い、 ~/.bashrc に ack=ack-grep のエイリアスを作成し、 ~/.bashrc に h() 関数を入れて、端末に入力するとすべてがうまくいきます。しかし、同じコマンドを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日間、この問題に対する回避策はありません。

ベストアンサー1

問題は、bashが非対話式で始まると読まないことです~/.bashrc

h()だからスクリプトを読んでください。

スクリプトでエイリアスを使用するには、次の手順を実行する必要があります。

  1. スクリプトでエイリアスを許可するshopt -s expand_aliases

  2. スクリプトでエイリアスを定義します。

エイリアスの代替は、シェル関数を定義することです(対話型シェルと非対話型シェルで同じように機能します)。

foo () {
  bar "$@"
}

ただし、スクリプトを実行するシェルが再初期化されると、実行中のシェルのエイリアスまたは関数定義をスクリプトにインポートできません。

おすすめ記事