
コマンドラインまたはシェルスクリプトで次の行を実行すると、プロセスリストに表示されますか?
bash -c "echo $password"
または
echo $password
bashまたは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と他のほとんどのユニスでは。