コンテキスト:ログイン時にアプリケーションを自動的に起動させようとしています。このため、アプリケーションのpath
を選択する必要があります。
すでに調べたパスは次のとおりです。
/sbin
/usr/sbin
/usr/local/bin
/usr/share/
これが役立つ場合、私が見つけようとしているアプリケーションは " ScreenCloud "と呼ばれ、Ubuntu Software Centerからダウンロードしました。
しかし、それを見つけることができません。特定のソフトウェアがどこにインストールされているかを知る方法はありますか?これを見つけたとしても、今後は同じ問題を避けたいと思います。
実行可能ファイルのパスを検索します
最善の方法
type executable
type
の優れた点について詳しくは、 この質問 をご覧ください。 (ありがとう、コメント!)
その他の方法
whereis executable
which executable
これらのコマンドは、PATH変数(echo $PATH
)、したがって、それらは一部のケース(組み込み関数、エイリアス、またはbash関数など)では無効です。
次のコマンドを使用して、すべての$PATH
ディレクトリを一覧表示します。
echo $PATH | sed 's/:/\n/g'
次のコマンドを使用して、screencloud
の完全パスを検索します。
for i in $(echo $PATH | sed 's/:/\n/g'); do find $i/screencloud* 2>@1; done
apt
、apt-get
、またはUbuntuソフトウェアセンターを使用してパッケージをインストールした場合は、次のコマンドを使用して完全パスを検索できます。
dpkg -L screencloud | grep bin
this repository を使用したとすると、/usr/bin/
でscreencloud
を見つけることができるはずです。
完全なパスは次のとおりです。
/usr/bin/screencloud
または
/usr/bin/screencloud-*
ただし、質問で snapcraft store を 提供したリンク に従って使用した場合、パスは次のディレクトリの下になります。
/snap/bin
また、Ubuntuは大文字と小文字を区別するため、大文字を含まないすべて小文字を使用する必要があることを忘れないでください。
システム情報をリストするプログラム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
最後のオプションlocate
は、コマンドプロンプトから実行されるプログラムだけでなく、uname
を含むすべてのファイルを返します。
locate
の利点は、コマンドを検索できることですnot in検索パス。 type -a
(単純なtype
よりも優先)およびwhich
は、検索パス内のコマンドのみを検索します。検索パスを表示するには、echo $PATH
を使用します。
screencloudの起動方法 の例を見てみましょう。
試してみてください...
/opt/screencloud/screencloud.sh
locate screencloud
コマンドはそれを見つけますが、which screencloud
とtype -a screencloud
は見つかりません。
screencloud.sh
で、locate
コマンドのみが部分一致で検索します。/opt/screencloud
はおそらく検索パスにありません。 which
およびtype
は、検索パスで実行可能ファイルのみを検索します。注:これは古い回答です。モダンScreenCloudはscreencloud
で呼び出されます。
find
コマンドに対するLocateの利点は、数百倍または数千倍も高速化できることです。また、find
を/
から実行すると、locate
では発生しない多くの権限エラーが発生します。
今日プログラムをインストールしたばかりの場合は、Sudo updatedb
を使用して、locateのデータベースを更新する必要があります。