2

AIXで実行する場合、次の2つのコマンドの違いは何ですか?

/bin/sh 'ls -l -R'
/bin/sh -c 'ls -l -R'
4

2 に答える 2

10

AIXでは、/bin/shデフォルトでKorn Shell(ksh)になります。

/bin/sh 'ls -l -R'

kshを使用すると、シェルが実行さls -l -Rれ、(現在のディレクトリまたはパスで)という名前のスクリプトを実行するように指示されます。この名前のスクリプトが見つからない場合、kshは引数をコマンドとして扱い、実行します。

bashを使用すると、スクリプトが見つからない場合、エラーが発生することに注意してください。

/bin/sh -c 'ls -l -R'

これにより、シェルの新しいインスタンスが開始され、コマンドを実行するように指示されls -l -Rます。

于 2010-03-23T14:10:24.947 に答える
5

(これはPhil Rossに対応していますが、フォーマットが必要です:)

Linuxアカウントの1つを使用する:

sh> /bin/sh --version
GNU bash, version 3.2.39(1)-release (i386-redhat-linux-gnu)
Copyright (C) 2007 Free Software Foundation, Inc.
sh>  /bin/sh 'ls -l -R'
/bin/sh: ls -l -R: No such file or directory
sh> /bin/sh ls
/bin/ls: /bin/ls: cannot execute binary file
sh> /bin/sh -c 'ls -l | head -1'
total 147296
sh> 

Cygwinインストールの1つを使用する:

sh> /bin/sh --version
GNU bash, version 3.2.49(23)-release (i686-pc-cygwin)
Copyright (C) 2007 Free Software Foundation, Inc.
sh> /bin/sh 'ls -l -R'
/bin/sh: ls -l -R: No such file or directory
sh> /bin/sh ls
/usr/bin/ls: /usr/bin/ls: cannot execute binary file
sh> /bin/sh -c 'ls -l | head -1'
total 264744
sh> 

あなた/bin/shは変わるかもしれませんが、これは適切な行動のようです:

  • / bin / shにfilename引数を指定すると、それがシェルスクリプトのファイル名として解釈され、実行が試みられます。
  • -cに引数を指定すると、その引数が/ bin / shコマンドラインとして解釈され、実行が試みられます。

詳細については、次のように入力してください

man sh
于 2010-03-23T15:48:54.697 に答える