web-dev-qa-db-ja.com

bashで実行可能スクリプトを実行するときにドットスラッシュを回避する方法はありますか?

スクリプトがあるとしましょう。

chmod +x myscript

今これを実行するために私は行きます

./myscript

しかし、タイプするだけで実行できる方法はありますか

myscript

???

9
foreyez

私は同じ問題を抱えていて、今のところ明確に質問に答えるまで答えはないようです。

質問の解決策は、export PATH=.:$PATH.bash_profileに追加することです。これには、コマンドの検索中にunix検索パスへの現在のディレクトリが含まれます。また、そうすることの セキュリティリスク について自分自身に通知することも賢明です。

8
Wi8shadow

スクリプトが配置されているディレクトリのパスをPATH変数に追加します。

export PATH=$PATH:/path/to/directory
5
nando
export PATH=/path_to_folder_containing_executable/:$PATH

新しいターミナルを開くたびにそれを実行したくない場合は、その行を~/.bashrcにいつでも追加できます。

幸運を!

1
Josh Jobin

/ bin /、/ usr/binなどにスクリプトファイルのシンボリックリンクを作成します。

ln -s /path_to_script/myscript /usr/bin/myscript 
1
pl_rock

スクリプトをホームディレクトリのbinディレクトリである~/binに配置します。次に、~/binPATHに追加されていることを確認します。すでにある可能性があります(ただし、ログアウトして再度ログインする必要がある場合があります)。

PATHを変更して.を含めることができますが、これは危険です。セキュリティ上の問題が発生する可能性があります。例えば。

最も明白です。 最初に.を調べるようにPATHを設定した場合:ディレクトリaに実行可能ファイルlsがあり、何か悪いことをしている場合。次にcd a; lsと入力します。その後、何か悪いことが起こります。

思い出すのは便利な場合だけです。最後に.を調べるようにPATHを設定した場合:次にtestというプログラムを作成しますが、実行しても何も起こらないようです(これは、優先度の高いtestを実行しているためです。出力はなく、終了コードのみです)。新しいソフトウェアがインストールされている場合、この新しいソフトウェアがプログラムをマスクする可能性もあります(ただし、これはPATHの最後に~/binを付けることと同じです)。

自宅にディレクトリを作成する必要があります。PATHの最後に~/bin、PATHの最初に~/bin/override。 〜/ bin/override`はほとんど空です。

0
ctrl-alt-delor

これより前に投稿された他のすべての回答は正しいです。 (ただし、~/.bashrcについて言及していないものは、その点で不完全です。)ただし、それらを使用したくない場合は、次の方法があります。

タイプ:

alias myscript="/path_to_folder_containing_executable/myscript"

または

myscript() { /path_to_folder_containing_executable/myscript "$@"; }

2番目の関数(「シェル関数」と呼ばれます)は入力できます

myscript() {
        /path_to_folder_containing_executable/myscript "$@"
}

必要に応じて。これらはすべて、myscriptが、シェルが$PATHを調べる前にチェックされる特別なタイプのコマンドであると定義しています。

他の回答のexportコマンドと同様に、これらは現在のシェルセッションにのみ影響します。効果を持続させるには、コマンドを~/.bashrcに入れます。

0
Scott