26

C プログラムで argv[0] と書くと、新しい名前が ps リストに表示されます。

どうすればbashでこれを行うことができますか?

4

8 に答える 8

28

経由で新しいプログラムを実行するときに実行できますexec -a <newname>

于 2010-07-15T00:22:12.153 に答える
11

記録のために、元の投稿者の質問に正確に答えるわけではありませんが、これは簡単なことですzsh:

ARGV0=emacs nethack
于 2014-11-19T20:55:36.427 に答える
10

bash のソースを確認する機会がありましたが、argv[0] への書き込みがサポートされているようには見えません。

于 2010-07-20T12:22:45.687 に答える
4
( exec -a foo bash -c 'echo $0' ) 
于 2010-07-15T06:24:55.707 に答える
0

少なくとも一部の環境では、実行時にこれが可能でなければならないことを付け加えておきます。Linux の perl で $0 を割り当てると、ps に表示されるものが変わります。ただし、それがどのように実装されているかはわかりません。私が見つけることができれば、私はこれを更新します。

編集: perl がそれを行う方法に基づいて、それは自明ではありません。実行時にバスクが組み込まれているとは思えませんが、確かなことはわかりません。perl が実行時にプロセス名を設定する方法を確認できます。

于 2010-07-15T13:38:38.877 に答える
-2

bash 実行可能ファイルを別の名前にコピーします。

スクリプト自体でこれを行うことができます...

cp /bin/bash ./new-name
PATH=$PATH:.
exec new-name $0

シェル スクリプトではないふりをしようとしている場合は、スクリプト自体の名前をクールな名前に変更したり、" " (単一のスペース) に変更したりできます。

exec new-name " "

スクリプトを bash で実行し、ps リストに として表示されますnew-name

わかりましたので、スクリプト " " を呼び出すのは非常に悪い考えです :)

名義変更は基本的に

bash script

bash の名前を変更し、スクリプトの名前を変更します。

心配ならマクドゥームさん。どうやら、バイナリを新しい名前にコピーすることについて(これは完全に安全です)、シンボリックリンクを作成することもできます

ln -s /bin/bash ./MyFunkyName
./MyFunkyName

このように、symlink が ps リストに表示されます。(再度 PATH=$PATH:. を使用します。./ が必要ない場合)

于 2016-12-01T23:29:03.773 に答える