特定のソフトウェアのパスを知る方法は?


13

コンテキスト:ログイン時にアプリケーションを自動的に起動しようとしています。このpathために、アプリケーションのを選択する必要があります。

ここに画像の説明を入力してください

すでに調べたパスは次のとおりです。

  • /sbin
  • /usr/sbin
  • /usr/local/bin
  • /usr/share/

これで問題が解決する場合、見つけようとしているアプリケーションは「ScreenCloud」と呼ばれ、Ubuntu Software Centerからダウンロードしました。

しかし、私はそれを見つけることができません、特定のソフトウェアがどこにインストールされているかを知ることができる方法はありますか?たとえこれを見つけたとしても、将来同じ問題を抱えることは避けたいと思うからです。


2
コマンドラインにscreencloudと入力しただけでは機能しませんか?
グラハム

Ubuntu aptリポジトリで見つけることができないため、スナップストアまたはUbuntuソフトウェアセンターから入手しましたか。
mchid

2
@mchid OPのリンクではなく、「Ubuntu aptリポジトリのいずれにも見つからないため」というコメントがあります。Screencloudは.debパッケージからインストールできますが、PPAを追加する必要があります。
WinEunuuchs2Unix

1
@mchidコマンドがからに変更されたscreencloud.shことを知っていて、からscreencloud移動された疑いがあり/optます。私の答えのその部分は、どうやって見つけるかtypewhichはなく、見つけるかを指摘してscreencloudいましたlocate
WinEunuuchs2Unix

1
@ WinEunuuchs2Unixすぐに。screencloud.sh実際にはまだ存在screencloud.shますが、ファイルがスクリプトであり、そうscreencloudでないという事実以外の違いはわかりません。私は本当にこのアプリケーションに精通していません。下に/usr/bin/ありscreencloudscreencloud.shあり、また、screencloud-どのようなバージョン番号の並べ替えが続いgimpています。
mchid

回答:


16

実行可能ファイルのパスを見つける

最良の方法

  • type executable

この質問をご覧くださいtype。(ありがとう、コメント!)

他の方法

  • whereis executable
  • which executable

これらのコマンドはPATH変数(echo $PATH)のみを検索するため、場合によっては無効です(組み込み関数、エイリアス、またはbash関数など)。


3
信じられないほど、これはまだubuntuへの質問に関する質問ではありませんでした。良い質問@Ced!
タツ

確かに、私はそれを信じることができません!
ビジビ

1
typeが好む別の質問からわかったwhichシェルの組み込みコマンドであり、コマンドがエイリアスであるかどうかを判断できるためれます。それは私にとっても新しいことでした!
アーノニカル

1
理由の(長い)説明については、こちらを参照してください typeなぜ
テルドン

1
@mchid回答のポイントはすべて適用されます。whichシェルスクリプトの特定のコンテキストで実際に役立つことを指摘する「ユースケース」セクションを含めます。ただし、そのコンテキスト以外では、typeほとんどの場合、より良い選択です。
テルドン

1

パスの内側または外側のコマンドの場所を見つける

unameシステム情報を一覧表示するプログラムであるの場所を検索するとします。トップレベルのコマンドが保存されているディレクトリを知りたい場合、いくつかのオプションがあります。

$ which uname
/bin/uname

$ type -a uname
uname is /bin/uname

$ command -v uname
/bin/uname

$ locate uname
/bin/uname
    (... SNIP dozens of Windows files on C & D ...)
/usr/lib/klibc/bin/uname
/usr/lib/plainbox-provider-resource-generic/bin/uname_resource
/usr/share/man/man1/uname.1.gz
/usr/share/man/man2/oldolduname.2.gz
/usr/share/man/man2/olduname.2.gz
/usr/share/man/man2/uname.2.gz

利点を見つける

最後のオプションlocateuname、コマンドプロンプトから実行されるプログラムだけでなく、すべてのファイルを返します。

の利点 locate、検索パスにないコマンドを見つけることです。type -a(simpleよりも優先typewhich、検索パスでのみコマンドを検索します。検索パスを表示するには、を使用しますecho $PATH

たとえば、screencloudを起動する方法のこの回答をご覧ください。

試してみてください...

/opt/screencloud/screencloud.sh

locate screencloudコマンドは、それを見つけるだろうが、which screencloudtype -a screencloudなりませんので。

  • 完全な名前はscreencloud.shlocate部分一致でのみ検索するコマンドです。
  • /opt/screencloud おそらく検索パスにはありません。 whichそして、typeのみ検索パスに実行可能ファイルを探してください。

注:これは古い回答です。最新のScreenCloudはで呼び出されscreencloudます。

Locateのfindコマンドに対する利点は、数百倍または数千倍も高速化できることです。実行中find、から/すると、で発生しない多くの許可エラーが発生しますlocate

欠点を見つける

今日プログラムをインストールしたばかりの場合は、sudo updatedblocateのデータベースの更新に使用する必要があります。


1

次のコマンドを使用して、すべての$PATHディレクトリを一覧表示します。

echo $PATH | sed 's/:/\n/g'

次のコマンドを使用して、次のフルパスを検索しますscreencloud

for i in $(echo $PATH | sed 's/:/\n/g'); do find $i/screencloud* 2>@1; done

あなたが使用している場合aptapt-getパッケージをインストールするか、Ubuntuソフトウェアセンター、あなたは完全なパスを検索するには、次のコマンドを使用することができます。

dpkg -L screencloud | grep bin

あなたが使用すると仮定すると、このリポジトリを、あなたは見つけることができるはずscreencloud の中で/usr/bin/

完全なパスは次のとおりです。

/usr/bin/screencloud

または

/usr/bin/screencloud-*

ただし、質問で指定したリンクに従ってsnapcraftストアを使用した場合、パスは次のディレクトリにあります。

/snap/bin

より詳しい情報

また、Ubuntuでは大文字と小文字が区別されるため、大文字を使用せずにすべて小文字を使用する必要があることに注意してください。


この非常に詳細な回答をありがとう、あなたは賛成票を獲得しました:)
Ced

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