/ usr / local / bin内のバイナリ


3

コマンドがどこにあるのかを調べます。

xxx:~/mono/mono-2.6.7$ which mono
/usr/local/bin/mono

直接実行すれば問題ありません。

xxx:~/mono/mono-2.6.7$ /usr/local/bin/mono -V
Mono JIT compiler version 2.6.7 (tarball Mon Aug  2 16:01:50 UTC 2010)
Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
....

しかし、パスなしでコマンドを実行すると、それを見つけることができません。

xxx:~/mono/mono-2.6.7$ mono
bash: /usr/bin/mono: No such file or directory

/ usr / binにモノラルファイルはありません。

xxx:~/mono/mono-2.6.7$ ls -l /usr/bin/mono
ls: cannot access /usr/bin/mono: No such file or directory

これが私の道です:

xxx:~/mono/mono-2.6.7$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

コロンで区切られた各ディレクトリを検索しませんか。それで、/ usr / local / binにmonoがないのでしょうか。

rootとしてログインすれば、うまくいきます。コマンドラインでmonoを実行すると、それが見つかります。権限は次のとおりです。

xxx:~/mono/mono-2.6.7$ ls -l /usr/local/bin/mono
-rwxr-xr-x 1 root root 8452592 2010-08-02 16:23 /usr/local/bin/mono

使用しているユーザーは正しいグループに属していませんか?

回答:


7

Bashはコマンドの場所のキャッシュをメモリに保持するので、コマンドを起動するたびにPATHの探索全体を行う必要はありません。あなたの最初のbashセッションでは、bashは以前にそれを記憶していました mono だった /usr/bin/mono。それからあなたは削除しました /usr/bin/mono そして追加 /usr/local/bin/monoしかし、実行中のbashはまだキャッシュ内に古い場所を持っていました。

コマンドロケーションキャッシュは、次のコマンドで操作できます。 hash ビルトイン。特に hash -r キャッシュをクリアします。

which これは外部コマンドなので、bashのキャッシュを使用せず、毎回PATH検索を実行します。あなたも使ったかもしれない typeこれは組み込みのものであるため、ルックアップキャッシュを使用します。


hash-rは私のために働きました。いい答えです!
Florestan06

0

多分あなたは エイリアス モノのために定義された?ホームディレクトリに次のファイルがあることを確認してください。 .bashrc 。プロフィール 。ログイン または .bash_profile

...このようなものは含まれていません

 alias mono="/usr/bin/mono"

これもに配置することができます / etc / bashrc または / etc / profile

コマンド エイリアス 現在定義されているすべてのエイリアスを表示します。


いや。 monoのエイリアスはありません。

0

ログアウトしてから再度ログインしたところ、うまくいきました。愚かなことをしていたに違いない。しかし、それはうまくいきます!


わかりました。
Janne Pikkarainen

ログアウトして再度ログインすると、Gillesが述べたように実際にキャッシュがリセットされます。
Alexis Wilke
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.