
Linuxでファイルを実行しようとすると常に./executablefile
。executablefile
しかし、コマンドが見つからない場合は、ファイルを実行したいと思います(コマンドが優先順位です)。ガイドを使って調整しましたが、コマンドを作成しても見つからない場合は、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に入れてから、名前を入力して実行します。タブ完成もそこで動作します