カスタム bash コマンドを作成する方法 (python、perl、ruby ファイルの実行)

カスタム bash コマンドを作成する方法 (python、perl、ruby ファイルの実行)

Python/Perl/Ruby で実行される特定のツールを使用したいと思います。たとえば、myProgram.pyは ~/folder1/folder2/ に保存されています。これを、 のような bash からの入力で実行したいと思います>>> myProgram -h

これまでに、同様のことを行う 2 つの方法について読みました。

  1. bin ディレクトリにファイルを作成します。
# in /bin/
~/folder1/folder2/myProgram
# this works when the target is a bash program
  1. ~/.bashrc永続的なエイリアスの編集:
# in ~/.bashrc
alias myProgram='python ~/folder1/folder2/myProgram.py'

残念ながら、1 番目の方法は bash 以外のファイルでは機能しないようです (私が試した限りでは)。また、2 番目のオプションでは、次のようなエラーが返されるだけですmyProgram: command not found

コマンドを入力して Python/Perl/Ruby ツールにすばやくアクセスするための bash コマンドを作成するにはどうすればよいですか?

答え1

このようにスクリプトを実行するには、次の 3 つが必要です。

  1. スクリプトは、変数にリストされているディレクトリ内になければなりません$PATH。 にスクリプトを配置した場合~/bin、ログイン時にいつでもファイルへのフルパスを指定せずにスクリプトを実行するには、.bashrc次の行を追加してのパスを拡張する必要がありますexport PATH=$PATH:~/bin。パスにすでに存在するディレクトリを確認するには、それを印刷するだけですecho $PATH。 ファイルに変更を加えるには、.bashrc再ログイン (または bash の再実行) する必要があります。
  2. スクリプトには実行ビット権限が設定されている必要があります。これを行うには、コマンドを実行します。chmod +x /path/to/script
  3. スクリプトは、実行にどのインタープリターを使用するかを指定する必要があります。そのためには、スクリプトの最初の行として shebang: を使用します#!/path/to/interpreter。Python の場合は になります。OS によってバイナリの場所が異なる可能性があるため、どこにあってもデフォルトの Python インタープリターを実行する#!/usr/bin/pythonshebang 形式を使用することをお勧めします。#!/usr/bin/env python

更新: コメントに基づいて、この回答をシンボリックリンクで更新しています。すでにインストールされているツールに簡単にアクセスできるようにしたいだけであれば、スクリプトを作成する必要はありません。そのツールの実行可能ファイルを見つけて (またはスクリプトの場合は、まだ実行可能でない場合は実行可能にして)、そのツールman lnへのシンボリックリンク (を参照) を $PATH のディレクトリに配置する (または実行可能ファイルを含むディレクトリを $PATH に追加する) だけです。

alias注: スクリプトを実行可能にして (2 を参照)、に追加する.bashrcだけでも機能しますが、新しいスクリプトを作成するたびに新しいエイリアスを追加するのは非常に不便です。

関連情報