Linux
 Computer >> コンピューター >  >> システム >> Linux

Linuxでスクリプトをどのディレクトリからでも実行できるようにする方法

Linuxでスクリプトをどのディレクトリからでも実行できるようにする方法

Bashスクリプトを作成してフォルダに保存すると、そのフォルダ内にいるときにしか実行できないことに気づくでしょう。一方で、lsやimagemagick、apache、squidなどは、それぞれ異なるディレクトリにインストールされていても、どこからでも実行できるのは不思議に思いませんか?その理由は、これらのコマンドのパスが「PATH」環境変数に登録されているからです。この変数にパスを追加すれば、自分の作ったスクリプトも同じようにどこからでも実行できるようになります。

Bashにパスを追加する

始める前に、Linuxのセキュリティの仕組み上、PATHは3つの異なるレベルで設定できることを説明しておきます。まず最初はBashです。ここで行う設定はBashとその中で実行されるすべてのプログラムに影響しますが、「Bashの外側」には効果がありません。

例えば、どこからでもアクセスしたいスクリプトが1つのフォルダにまとめられているとしましょう。

Linuxでスクリプトをどのディレクトリからでも実行できるようにする方法

これを実現するには、そのフォルダのパスを「~/.bashrc」に追加します。「.bashrc」ファイル(ホームディレクトリにありますが、デフォルトでは隠しファイルになっています)をお好みのテキストエディタ(geditなど)で開きましょう。

ファイルの最終行に移動して、次の行を追加します。

export PATH="/path_of/the_folder_we/want_to_add_to:$PATH"
Linuxでスクリプトをどのディレクトリからでも実行できるようにする方法

例えば、実行可能なスクリプトを「/home/myname/scripts」フォルダに保存している場合は、次のように記述します。

export PATH="/home/myname/scripts:$PATH"
Linuxでスクリプトをどのディレクトリからでも実行できるようにする方法

変更を反映させるには、ファイルを保存してテキストエディタを終了し、ターミナルで以下のコマンドを実行します。

source ~/.bashrc
Linuxでスクリプトをどのディレクトリからでも実行できるようにする方法

その後、別のディレクトリに移動して、そこからスクリプトを実行できるか試してみてください。

プロファイルにパスを追加する

フォルダの中身をBashの制約の外側からも利用できるようにしたい場合は、代わりにProfile変数にパスを追加します。

お好みのテキストエディタで「.profile」ファイルを開いてください。

ファイルの最後に、次の行を入力します。

export PATH="$PATH:$HOME/scripts"

変更を有効にするには、一度ログアウトして再度ログインする必要があります。

Linuxでスクリプトをどのディレクトリからでも実行できるようにする方法

なお、Ubuntuおよびその派生ディストリビューションでは、「.profile」ではなく「.pam_environment」ファイルを編集することが推奨されています。

テキストエディタで「.pam_environment」ファイルを開きます。ファイルが存在しない場合は新しく作成してください。

そのファイルに、次の内容を記述します。

PATH DEFAULT=${PATH}:/home/@{PAM_USER}/scripts
Linuxでスクリプトをどのディレクトリからでも実行できるようにする方法

ポイントは、完全に固定されたパスを書く代わりに(「.profile」の場合とは異なり)、ここでは変数を使用している点です。こうすることで、各ユーザーの「/home/ユーザー名/scripts」フォルダが、それぞれのユーザーのパスに自動的に追加されます。

「.profile」を編集した場合と同様に、変更を反映するにはログアウトして再ログインが必要です。

Linuxでスクリプトをどのディレクトリからでも実行できるようにする方法

環境変数にパスを追加する

同じコンピュータを共有する複数のユーザーが、あるフォルダの中身を利用できるようにする正しい方法は、環境変数のPATHにそのフォルダを追加することです。ターミナルを起動して、以下のコマンドを入力しましょう。

sudo nano /etc/environment

このファイルのPATH変数には、コロンで区切られた多数のフォルダが引用符で囲まれて列挙されています。例えば次のような形です。

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin"

自分のフォルダをこのリストに含めるには、最後のパスの直後、閉じ引用符の前に、コロンと自分のフォルダへのパスを追記します。先ほどと同じようにフォルダが「/home/your_username/scripts」であれば、次のようになります。

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/YOUR_USERNAME/scripts"
Linuxでスクリプトをどのディレクトリからでも実行できるようにする方法

なお、大文字である必要はありません。ここで大文字を使っているのは、自分のフォルダをどこにどのように追記すべきかを分かりやすく示すためです。

前述の例と同様に、ログアウトして再ログインすると変更が適用されます。

以上のテクニックを使えば、Linux上のどこからでも自分のスクリプトを実行できるようになります。

関連記事:

  • Kmdrでターミナルのコマンドの意味を調べる方法
  • コマンドライン履歴をもっと便利に検索する方法
  • Linux初心者向けの基本Bashコマンド集
  1. Linuxスクリプトを活用してWindows 10のデスクトップを自動整理する方法

    この記事のタイトルを初めて見たとき、「技術的に間違っているのでは?」と感じるかもしれません。LinuxとWindowsはまったく別のOSであり、互いに無関係な存在だからです。かつてWindows上でLinuxスクリプトを使うには、Cygwinのようなツールをインストールするか、デュアルブート環境を構築するか、Sambaを導入するしかありませんでした。しかし、Windows 10の登場によって状況は一変しました。Microsoft Storeから複数のLinuxディストリビューションを入手できるようになったのです。WSL(Windows Subsystem for Linux)を利用すれば、Wi

  2. パソコンでフォルダーを作成する方法【初心者向けステップ解説】

    フォルダーは、パソコンやタブレットなど、あらゆるデバイスのデータを整理整頓するために欠かせない機能です。フォルダーの中にサブフォルダー、さらにその中にサブサブフォルダーと階層を作ることで、すべてのファイルを体系的に管理できます。作成したフォルダーは検索バーから簡単に見つけられるほか、フォルダー名を内容に合わせて付けておけば、目的のファイルへ素早くアクセスできるようになります。例えば、私が大学生だった頃は、履修していた6科目それぞれにフォルダーを作成し、その中に「課題」「テスト」「プロジェクト」などのサブフォルダーを分けて管理していました。期末試験が近づいたとき、すべてが整理されていたおかげで本