何かのスクリプトを使うときに億劫に感じるのが設定です。で考えたのが動いているプロセスから主要なプロダクトのディレクトリを探す方法です。
#!/bin/sh
function variable() {
TEMPLSIT=`mktemp --tmpdir=/var/tmp XXX.sh`
while read var cmd depth
do
ps --no-headers --format cmd -C $cmd | \
awk -vcmd=$cmd '{ for(i = 1; i <= NF; i++) { if (index($i, cmd) > 0) { print $i; exit} } }' | \
awk -vd=$depth '{ n = split($1, a, "/"); for (i = 2; i < (n + d); i++) { printf("/%s", a[i]) } print ""; }' | \
awk -vvar=$var '{ printf("export %s=%s\n", var, $1 ) }'
done << _EOF_
SAS_HOME sasauth -4
SAS_CONFIG MetadataServer.sh -3
LSF_HOME mbatchd -3
PM_HOME jfd -3
RTM_HOME lsfpollerd -2
GMS_HOME gabd -1
_EOF_
rm -f $TEMPLSIT
}
variable
実行すると環境変数の定義を生成します。
[root@dwtcjp conf]# sh variable.sh
export SAS_HOME=/SAS/SAS_HOME
export SAS_CONFIG=/SAS/SAS_CONFIG
export LSF_HOME=/SAS/LSF_HOME
export PM_HOME=/SAS/PM_HOME
export RTM_HOME=/SAS/RTM_HOME
export GMS_HOME=/SAS/LSF_HOME/gms