シェルスクリプトの中身を見れないようにしようと思って調べていた所、shcというシェルスクリプトをバイナリ化するプログラムがあるようだったので使ってみる事にした。
前提として、利用にはmakeが必要なので、gccが必要。

1.インストール

まずはインストール。
こちらのページから、以下のコマンドでダウンロード、コンパイルを行う。

HTTP="http://www.datsi.fi.upm.es/~frosal/" && curl -s $HTTP | grep .tgz | awk -F\" '{print $2}' | sed 's/^.\///g' | xargs -I{} echo $HTTP{} | xargs wget
tar xzvf shc-*.tgz
cd shc-*
make
make install

これでインストールが完了した。

2.バイナリ化を行う

shcコマンドは、基本的に以下のようにコマンドを実行するだけで、「指定したシェルスクリプト名.x」というバイナリファイルを作成してくれる。

shc -f バイナリ化するシェルスクリプトPATH

実際に、以下のようなシェルスクリプトを作成し、バイナリ化してみる。

●test.sh

#!/bin/sh
echo test
echo $0
pwd

[root@BS-PUB-CENT7-01 ~]# pwd
/root
[root@BS-PUB-CENT7-01 ~]# ls -l test.sh*
-rw-r--r--. 1 root root 32  4月  6 00:35 test.sh
[root@BS-PUB-CENT7-01 ~]# cat test.sh
#!/bin/sh
echo test
echo $0
pwd
[root@BS-PUB-CENT7-01 ~]# sh test.sh
test
test.sh
/root
[root@BS-PUB-CENT7-01 ~]# shc -f test.sh
[root@BS-PUB-CENT7-01 ~]# ls -l test.sh*
-rw-r--r--. 1 root root    32  4月  6 00:35 test.sh
-rwx--x--x. 1 root root 11152  4月  6 00:37 test.sh.x
-rw-r--r--. 1 root root  9283  4月  6 00:37 test.sh.x.c
[root@BS-PUB-CENT7-01 ~]# file test.sh*
test.sh:     POSIX shell script, ASCII text executable
test.sh.x:   ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=e335100ddec4e55e908a1d62a53d2c24156f9de0, stripped
test.sh.x.c: C source, ASCII text
[root@BS-PUB-CENT7-01 ~]# ./test.sh.x
test
./test.sh.x
/root

確かに、シェルスクリプトをバイナリ化できた。
あまり使う機会は無いだろうけど、いつかは利用するかもしれない。