タグ付けされた質問 「which」

5
「which」を使用しないのはなぜですか?それでは何を使用しますか?
実行ファイルへのパスを探したり、Unixシェルでコマンド名を入力する場合に何が起こるか確認する場合は、異なるユーティリティの茄多があります(which、type、command、whence、where、whereis、whatis、hash、など)。 which避けるべきだとよく耳にします。どうして?代わりに何を使うべきですか?

7
エイリアスコマンドで「which」を使用する方法は?
ほとんどのユーザーと同様に、頻繁に使用するプログラムにデフォルトのフラグセットを提供するために、多数のエイリアスを設定しています。例えば、 alias vim='vim -X' alias grep='grep -E' alias ls='ls -G' 問題はwhich、vim/ grep/ ls/ etcがどこから来たのかを確認したい場合、エイリアスが邪魔になることです: $ which vim vim: aliased to vim -X これは有用な出力ですが、この場合に私が探しているものではありません。私vimはエイリアスさvim -Xれていること を知っていますvimが、どこから来ているのか知りたいです。 エイリアスを一時的に定義解除するだけでは使用できませんが、エイリアスを「アンラップ」してその上で実行whichする簡単な方法はありwhichますか? 編集:which異なるシェル間で異なる動作をするシェル組み込みのようです。Bashでは、SiegeXによる--skip-aliasフラグの提案が機能します。ただし、私はZshを使用しています。似たようなものがそこにありますか?
76 shell  zsh  alias  which 

1
Bashは、移動/削除された実行可能ファイルへの誤ったパスを記憶します
私がする時 which pip3 私は得る /usr/local/bin/pip3 しかし、実行しようとするpip3と、次のようなエラーが表示されます。 bash: /usr/bin/pip3: No such file or directory これは、最近そのファイルを削除したためです。今whichの別のバージョンへのコマンドポイントpip3それはに位置しています/usr/local/binが、シェルはまだ間違ったパスを記憶しています。そのパスを忘れさせるにはどうすればよいですか? whichマニュアルは述べています which returns the pathnames of the files (or links) which would be executed in the current environment, had its arguments been given as commands in a strictly POSIX-conformant shell. It does this by searching the …
29 bash  path  which 

3
私の `which`コマンドは間違っているかもしれません(時々)?
私のマシンにインストールされているバージョンは(非常に)古い(v21.3)ため、ソースコード(v24.2)から最後のemacsバージョンをコンパイルしました。私はいつもやった: $configure --prefix=$HOME make make install 今、私はemacsをテストしており、以前のバージョンをまだ起動していることに気付きました...私の$HOME/binパスはシステムのものをオーバーライドすることになっています(.bashrcファイルの$ PATHに追加されているため)。 私の最初の考えは、whichコマンドの出力を見ることでした。そして驚いたことに、これは新しいemacsへのパスを提供します。ここで矛盾がどこにあるか理解できません。同じセッションでの出力は次のとおりです。 $ emacs --version GNU Emacs 21.3.1 $ `which emacs` --version GNU Emacs 24.2.1 emacsに関係するエイリアスはありません。まったく。 $ alias | grep emacs $ 何が起こっているのでしょうか?
17 bash  emacs  path  which 

1
どことどこの違いは何ですか
whereとwhichシェルコマンドの違いは何ですか?下記は用例です ~ where cc /usr/bin/cc /usr/bin/cc ~ which cc /usr/bin/cc そして ~ which which which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' /usr/bin/which ~ which where /usr/bin/which: no where in (/usr/local/bin:/bin:/usr/bin:/home/bnikhil/bin:/bin) また ~ where which which: aliased to alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde which: shell built-in command /usr/bin/which /usr/bin/which …

2
Unix whichコマンドで検出されるホームディレクトリパスを追加する方法
node.jsカスタムの場所にインストールし、その場所を$PATHin .profileファイルに追加しました。 $ node --version v0.6.2 $ which node $ echo $PATH /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:~/Unix/homebrew/bin $ cat ~/.profile export PATH="$PATH:~/Unix/homebrew/bin" Node.js自体は問題なく動作します。問題は、whichコマンドでリストされないことです。だからnpm今はインストールできません。そのためnpmの場所を見つけることができませんインストールしますnode.js。nodeによって発見されたバイナリをどのように作成できwhichますか?
12 path  profile  home  which 

1
ソフトウェアがインストールされているかどうかを(スクリプトから)検出する最良の方法は何ですか?
以前は、さまざまwhichなプラットフォーム(LinuxとSolaris vx。OS X)でコマンドからの出力が異なることに不満を感じていました。異なるシェルが問題に関与している可能性もあります。 typeより良い代替案として提案されてきましたが、それはどれほどポータブルですか? 過去に、which実行したさまざまなユースケースの出力を解析して処理する関数を作成しました。それらは私が使用するすべてのマシンで動作するため、私の個人用スクリプトには問題ありませんが、他のユーザーが使用するためにどこかに投稿するソフトウェアには、これは非常に信頼できないようです。 考えられる例を1つだけ挙げると、bashとzshがマシンで使用可能かどうかをスクリプトから検出し、zshが存在する場合はzshを使用し、zshが存在せず、bashで十分な場合はbashを使用する必要があるとします。特定のバグがないバージョン。スクリプトの残りのほとんどは、BourneシェルまたはRubyなどですが、これはzshまたは最近のバージョンのbashのいずれかで行う必要があります(AFAIK)。 typeプラットフォーム間で利用できることを期待できますか?which特定のソフトウェアがインストールされているかどうかの質問に簡単かつ一貫して回答できる他の方法はありますか? (もしあなたが私が与えた例に特に関連した考えを与えたいならそれは素晴らしいですが、私は主に一般的なケースについて尋ねています:特定のものが特定のマシンにインストールされているかどうかを調べる最も信頼できる方法は何ですか? ?)
9 bash  zsh  standard  which 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.