2017-01-14 7 views
0

Cでテストスクリプトを作成し、コンパイルして/ usr/binディレクトリに置いて、mkdirまたはlsのような場所から実行します。しかし、私は$ test何も起こらないと書きました。もし私が$ /usr/bin/testと書いたらうまくいきます。私が間違ったことは?私はUbuntu 14を手に入れました。Cスクリプトがグローバルに動作しない

+7

これはシェルの標準コマンドであるため、あなたのプログラムに 'test'という名前を付けてはいけません。例えば、 [この 'test'マニュアルページ](http://man7.org/linux/man-pages/man1/test.1.html)。 '/ usr/bin'にコピーすることで、既存の' test'コマンドを上書きすることができます。 ***決して***あなたのプログラムを盲目的にシステムディレクトリにコピーしないでください! –

+0

コードは掲載されていませんが、これはトピックに関して遠隔地でさえありません。 "私のLinuxコマンドは動作しません"質問はhttp://unix.stackexchange.com/にあります[ask]をお読みください。 – Mawg

答えて

2

シェル(bashなど)にはシェルが組み込まれています。という名前のtestがあります。したがって、testを実行すると、test/usr/bin/であるにもかかわらず、にシェルが組み込まれており、testが実行されます。あなたが完全なパスを与えるとき、そこにはあいまいさはありません(PATHや組み込み関数の中にある他のバイナリtestのように)。

あなたは実行することでこれをテストすることができます。

$type test 

システムバイナリやシェル組み込みコマンドと干渉しない何か他のものにあなたのバイナリに名前を付けます。バイナリが一意に指定されていても、バイナリをusr/local/bin/などの指定された場所に配置することをお勧めします。

関連する問題