3

~ のような特別なパス プレフィックスはありますか? 実行可能なベース名のみが提供されている場合、これがデフォルトの動作であることはわかっていますが、a=b のような派手な実行可能名を使用すると、./a=b のようにフルパスまたは相対パスでのみ呼び出すことができます。basename a=b だけを指定すると、bash はそれを変数割り当てとして解釈します。

4

4 に答える 4

4

これは正確には接頭辞ではありませんが、実行可能ファイル名を ( のように) 引用する'a=b'と、PATH でそれが見つかります。(バッシュ 3.2.17)

于 2012-08-31T11:46:40.333 に答える
3

そのようなプレフィックスはありません。「奇妙な」文字を含むファイル名を実行することが唯一の目的である場合は、必要ありません。これらの文字を引用するだけ'a=b'ですa\=b。次に、bash の解析と展開により、コマンドの最初の単語が になりますa=b。これは、他のコマンド名と同様にパスで検索されます。

パス内のプログラムを検索して実行したくない場合は、 を使用しますcommand -v。(同じ効果を持つ他のビルトインがあり、command -v移植可能であるという利点があります(bashビルトインであり、POSIXにあります)。使用しないでください。whichこれは外部コマンドであり、信頼性が低く、移植性がありません。)

を含むパス内のすべてのディレクトリを検索する場合はa=b、 を使用できますtype -a

type -aP a=b
于 2012-08-31T12:15:51.040 に答える
1

commandビルトインはまさにこの目的のために設計されています。つまり、コマンド (エイリアスでも関数でもない) を探します。

command a=b

トリックを行う必要があります。bash マニュアルから:

  command [-pVv] command [arg ...]
          Run  command  with  args  suppressing  the  normal  shell function
          lookup. Only builtin commands or commands found in  the  PATH  are
          executed.   If  the  -p option is given, the search for command is
          performed using a default value for PATH  that  is  guaranteed  to
          find all of the standard utilities.  If either the -V or -v option
          is supplied, a description of command is printed.  The  -v  option
          causes  a  single word indicating the command or file name used to
          invoke command to be displayed; the -V option produces a more ver‐
          bose  description.   If  the -V or -v option is supplied, the exit
          status is 0 if command was found, and 1 if not.  If neither option
          is  supplied and an error occurred or command cannot be found, the
          exit status is 127.  Otherwise, the exit  status  of  the  command
          builtin is the exit status of command.
于 2012-08-31T12:05:50.723 に答える
0

個人的には引用符を使用しますが、別の可能性は次のとおりです。

(exec a=b)
于 2012-08-31T11:59:56.713 に答える