redhat/bash - 2つの同じスクリプト、1つは「コマンドが見つかりません」エラーが発生しました

redhat/bash - 2つの同じスクリプト、1つは「コマンドが見つかりません」エラーが発生しました

私は2つのスクリプトを書いた。 1つは、いくつかの説明を持つ他のスクリプトの簡単なコードが含まれています。

ユーザー:oracleこれら2つのファイルはoracleです。両方のファイルに実行権限があります。chmod +x fpc.sh && chmod +x bpc.sh

有効なスクリプト: fpc.sh

#!/bin/bash
#
# author bla bla bla
#
ORACLE_SID=MyOracleSid
PATH=/app/oracle/admin/DB/$1
TARGHET="\/app\/oracle\/admin\/DB\/$1"
chmod -R 755 $PATH

find $PATH -type f -exec egrep 'ORACLE_SID' {} \; -print

動作しないスクリプト:bpc.sh

#!/bin/bash
#
# author bla bla bla
#
ORACLE_SID=MyOracleSid
PATH=/app/oracle/admin/DB/$1
#
#TARGHET="\/app\/oracle\/admin\/DB\/$1"
#
#
#
#
#
#
#
#
#
#
#
#
#
#
chmod -R 755 $PATH

find $PATH -type f -exec egrep 'ORACLE_SID' {} \; -print

bpc.shは次のようになります:

chmod コマンドが見つかりません。 find コマンドが見つかりません。

それはどのように可能ですか?

助けてくれてありがとう、

答え1

これがCAPSBashで変数名を使用することです本当に悪い考えです。

snake_caseまたはを使用すると、CamelCase環境変数は変更されませんPATH

したがって:

path=/app/oracle/admin/DB/$1

大丈夫です。

PATH=/app/oracle/admin/DB/$1

いいえ。

走る

( set -o posix ; set )

いくつかの変数があるかどうかを確認するために、誤って変数を上書きした可能性がありますCAPS。追跡しようとするよりも一般的なルールと考えてください。いいえ使用CAPS

関連情報