シェルエコー組み込みが呼び出され、プロセスリストに表示されないようにするにはどうすればよいですか?

シェルエコー組み込みが呼び出され、プロセスリストに表示されないようにするにはどうすればよいですか?

コマンドラインまたはシェルスクリプトで次の行を実行すると、プロセスリストに表示されますか?

bash -c "echo $password"

または

echo $passwordbashまたはbashシェルスクリプトのコマンドラインから実行するだけです。

この可視性を確認するために実行できるテストはありますか?今試してみましたが、リストされているプロセスの中には表示されません。ps -ef | grep testscript

テストスクリプト:

i=0
while (( i < 100 ))
do
((i=i+1))
sleep 1
echo $$
echo hello
uname
done

答え1

組み込み関数を使用するように強制するだけです。

builtin echo foo

echo内蔵されていないと失敗します。

答え2

組み込みps関数は独自のコマンドラインを持つ別のプログラムではないため、組み込み関数の引数はどの出力にも表示されません。すべてのbashバージョンを含むすべての最新のシェル(BusyBoxのいくつかの非常に合理化された構成を除く)には、この機能がecho組み込まれています。

電話をかけると、bash -c "echo $password"パスワードが実行するコマンドに含まれているため、誰でも見ることができますbash。単にコマンドを呼び出すためにシェルを呼び出すことはecho意味がないので、そうしないことを願っています。

パスワードを別のプロセスに渡す必要がある場合は、パスワードを環境変数に入れることができます。コマンドラインパラメータとは異なり環境変数は他のユーザーに公開されません。Linuxと他のほとんどのユニスでは。

関連情報