1

ps -efコードのどこかを呼び出す perl スクリプトがあります。このスクリプトは Linux では機能しますが、Solaris 5.10 では機能しません。私の回避策は、.profile でエイリアスを定義することです。

ps_wrapper()
{
  if [[ $1 = "-ef" ]]; then 
    /usr/ucb/ps auxwwww
  else
    /usr/ucb/ps $1
  fi
}
alias ps=ps_wrapper

問題は、perl スクリプトでエイリアスを使用できないことです。このエイリアスを表示するスクリプトを取得するにはどうすればよいですか?

4

3 に答える 3

5

ps_wrapperシェルでのみ認識されるエイリアスであり、その下で実行されるプログラムには認識されません。ここで達成しようとしていることを実行するには、多くの方法があります。

  • スクリプトを作成ps_wrapperし、PATH
  • Perl スクリプトで OS を確認し、それに応じPOSIX::uname()psコマンド ラインを作成します。
  • CPAN を検索して、移植可能psな機能を実装するモジュールを探します (これは、多分?)。

さらにいくつかの考え:

  • Linux では、PS_PERSONALITY環境変数を使用してps「パーソナリティ」を設定できます。
  • Solaris では、psPOSIX/XPG/SUS に準拠しているため、コマンド ラインの SUS セマンティクスに固執するpsことで、(理論的には) 両方のシステムで同じコマンド ラインと出力を取得できます。
于 2013-11-08T19:33:36.943 に答える
1

シェル エイリアスは、perl スクリプトでは役に立ちません。回避策を perl スクリプトに移動するだけで完了です。スクリプトにハックを追加したくない場合はProc::ProcessTable、ターゲット プラットフォームで (うまくいけば) 動作する perl モジュール のようなものを使用してください。

于 2013-11-08T19:34:27.170 に答える
0

からエイリアスを使用する場合は、実行できbash -icます.bashrc。例:

$ grep hello ~/.bashrc
alias hello='echo hello'
$ bash -ic 'hello'
hello
于 2013-11-08T19:35:17.763 に答える