時々$PROJECT_HOME/*
、プロジェクト内のすべてのファイルを削除するために使用します。環境変数PROJECT_HOME
が設定されていない場合(私が設定su
し、新しいユーザーがこの環境変数を設定していないため)、ルートフォルダーからすべてのファイルの削除が開始されます。これは終末論的です。
bash
シェルで未定義の環境変数を使用する場合、エラーをスローするように構成するにはどうすればよいですか?
もちろん、varsを空の文字列に初期化することはありません。
—
PSkocik
[ -z "$VAR" ]
未初期化でVAR
も動作します。初期化は、望ましくない動作を示すためだけでした-私のポイントは、あなたの変数が何らかの方法で空の文字列に初期化さrm -r "$PROJECT_HOME"/*
れset -u
、誤って依存して実行すると、「黙示録的な」動作が得られることです。IHMO、お使いのコンピューターのコンテンツ全体を保護することに関しては、申し訳ないよりも安全である方が良いです。set -u
安全ではありません。
「とても長い」?危険な操作を手動で実行する便利な方法を探してはいけません。代わりに、目的の処理を行う関数、エイリアス、またはスクリプトを作成する必要があります。この場合、@ PSkocikの推奨コマンドからエイリアスを作成することは安全で便利です。
—
カイルストランド
ユーザーが設定したらどうなります
—
バーマー
PROJECT_HOME=/etc
か?空の値をチェックするだけでは、大変動を防ぐのに十分ではありません。ルートとして実行する場合、信頼できないユーザーの変数を使用しないでください。
set -u
あなたがしたいことをします。