"which"から返された "//"はどういう意味ですか?

testフルパスの下に実行可能なスクリプトがあります/home/sawa/foo/bar/test。このディレクトリは、を含むデフォルトディレクトリ/home/sawa/foo/bar内にあり、このディレクトリよりも優先されます。$PATH/usr/bin

`which test`

コマンドが正しく認識されたことを確認するには、次のように返します。

/home/sawa/foo/bar//test

//同じ名前の組み込みコマンドがあることがわかり、test私のコマンドを削除すると、次のコマンドがによって/usr/bin/test返されるので、which何らかの方法で邪魔になるとします。

  1. ここで二重スラッシュは何を意味し、ここに現れるのですか?
  2. 私の実行可能ファイルがtest機能していないようです。なぜそんなことですか?

ベストアンサー1

私はあなた/home/sawa/foo/bar/が持っていると思います。つまり、パスにスラッシュがあるパスがあります。

which各要素を繰り返し、ファイルが存在するかどうかを追加して$PATH確認します。/argv[1]これは二重スラッシュを引き起こします。 1つは$PATH部品で、もう1つは/argv[1]

二重スラッシュは大丈夫です。カーネルによってスラッシュに縮小されます。二重スラッシュはパスの先頭でのみ特別な意味を持つことができますが、必ずしもそうではありません。

test動作しない場合test。通常、これを行うにはフルパスを使用しますが、bashを使用してそれを使用して組み込みenable -n testコマンドtestを無効にすることもできます。

おすすめ記事