コマンドが見つからない場合は、ファイルの実行

コマンドが見つからない場合は、ファイルの実行

Linuxでファイルを実行しようとすると常に./executablefileexecutablefile

しかし、コマンドが見つからない場合は、ファイルを実行したいと思います(コマンドが優先順位です)。ガイドを使って調整しましたが、コマンドを作成しても見つからない場合は、pacmanデータベースから検索して、そのコマンドがどのパッケージにあるのかを教えて、コマンドが出てくると何かできることがわかりますcommand not found

これを行うための良い方法はありますか?

答え1

最も簡単ですが、しばしば禁忌になる方法は、次の./ようにシェル起動スクリプトの最後に環境変数を追加することです(bash / shバリアント)。PATH

export PATH=$PATH:./

これにより、シェルがローカルディレクトリ内のコマンドを見つける前に、すべての共通ディレクトリを最初に試みます。

注:使用上の責任はユーザー自身にあり、決してrootとして実行しないでください。

答え2

私はそれを使用していますcommand-not-found version: 0.2.44。コマンドが見つからない場合は、名前付き関数が実行され、command_not_found_handle()同様のコマンドのリストが提供されます。

次のように関数を作成します(端末にコピーして貼り付けるだけです。永続的ではありません)。

command_not_found_handle ()
{
    if [ -x $1 ]; then
        echo "executing ./$1"
        ./$1
        return $?;
    fi
    if [ -x /usr/lib/command-not-found ]; then
        /usr/bin/python /usr/lib/command-not-found -- "$1";
        return $?;
    else
        if [ -x /usr/share/command-not-found/command-not-found ]; then
            /usr/bin/python /usr/share/command-not-found/command-not-found -- "$1";
            return $?;
        else
            printf "%s: command not found\n" "$1" 1>&2;
            return 127;
        fi;
    fi
}

最初の数行を編集しました。たとえば、「now」と入力してfoobarコマンドが見つからない場合は、現在のフォルダに名前という名前のファイルが存在することを確認し、foobarファイルが実行可能な場合(-x)そのファイルが実行されます(./$1)。echo必要に応じてこの行を削除できます。

永久に作るために:

この関数は通常ファイルで定義されます/etc/bash.bashrc。この機能をファイルに追加できます~/.bashrc。ここではのセクションを扱います/etc/bash.bashrc

答え3

ファイルを/usr/binに入れてから、名前を入力して実行します。タブ完成もそこで動作します

関連情報