[CentOS7]環境変数PATHの変更方法_一時的と永続的
こんにちは。
タイトルの通り、環境変数PATHの設定変更方法について
一時的に変更する方法と永続的に変更する方法を
書いておこうと思います。
いつも忘れてしまうのですよね・・・
ググれば色々出てくるので、大きな問題はないのですが、
「自分の記事を見れば即決出来る」状態にすれば
時短にもなりそうなので・・・
この記事の目次は以下になります。
1.PATHを通すとは何か?
この議題については数多くの非常に優秀な方々が分かりやすい説明を
されているので、自分のような若輩者が今更コメントを入れるのは
意味のない行為かもしれませんが、一応。
私の中ではPATHを通すというのは次の用なイメージを持っています。
figure created by draw.io
環境変数PATHって聞くと難しいと認識しちゃうかもしれませんけど、
「OSが参考にしている辞書的なもの」
みたいなイメージだとわかりやすいのかなと思っています。
PATHという辞書は目次のようなもので、コマンドの内容を
確認する為にどこに見に行けばいいかが書いています。
例えば
cat /etc/hosts
ってユーザが入力してきたら、それを入力されたOS君は
「/etc/hostsをcatすればいいんだな!」ってまずは認識します。
ですが、catの意味が分かりません。
読めばいいのでしょうか?それとも削除すればいいのでしょうか?
それを確認する為にPATHを見に行きます。
PATHには各コマンドがどのような処理を行うのか、
それが記載されているファイルがある可能性のあるディレクトリが
書かれています。
OS君は、そのディレクトリを1つずつ見に行って、
もしファイルを見つけられたら、その内容を実行する
もし見つけられなかったら、ユーザに「そんなものはねぇ!」
と怒る。そういう感じだと認識しています。
2.一時的にPATHを変更する方法
一時的に環境変数PATHを変更する為には
export PATH = $PATH:(追加したいディレクトリ)
というように記載してあげることで、一時的にはなりますが、
PATHを通すことが出来ます。
例えば、/usr/pgsql-13/bin/の配下にコマンドの処理内容が記載されている
ファイルがあったとします。
[postgres@ssh_server ~]$ ls /usr/pgsql-13/bin/
clusterdb initdb pg_controldata pg_receivewal pg_test_timing postgres reindexdb
createdb pg_archivecleanup pg_ctl pg_resetwal pg_upgrade postgresql-13-check-db-dir vacuumdb
createuser pg_basebackup pg_dump pg_restore pg_verifybackup postgresql-13-setup
dropdb pg_checksums pg_dumpall pg_rewind pg_waldump postmaster
dropuser pg_config pg_isready pg_test_fsync pgbench psql
このコマンドのどれかを実行する時、普通であればフルパスではなく
コマンド名のみで実行しようとすると思います。
つまり、以下の○の様に入力はするが×の様には入力しないかなと思います。
※フルパスで指定してあげれば、環境変数PATHを編集しなくとも
コマンドを実行することが可能です。
○ initdb ~~~~~
× /usr/pgsql-13/bin/initdb ~~~~~
もし上記の○の様にコマンドを入力し、実行したいのであれば
環境変数PATHにディレクトリを追加する必要があります。
デフォルトの状態のPATHを確認してみると以下の様になっており、
/usr/pgsql-13/bin/は登録されていないことが分かります。
登録されていないからOSは「どこにもねぇよ!」と怒っているわけです。
[postgres@ssh_server ~]$ echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin
PATHに登録してみて再度確認してみます。
入っていることが確認出来ますね。
この状態でコマンドを実行すると正常に処理が通ります。
OSが/usr/pgsql-13/bin/を確認しに行くからですね。
[postgres@ssh_server ~]$ export PATH=$PATH:/usr/pgsql-13/bin/
[postgres@ssh_server ~]$ echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin:/usr/pgsql-13/bin/
このPATHの通し方でもいいのですが、これで通すと
例えばrebootとかをすると設定内容が消えてしまいます。
また登録しなおすのは非常に関口メンディー(=面倒)だと
思いますので次に永続的に変更する方法を記載します。
3.永続的にPATHを変更する方法
永続的にPATHを変更する方法は、
ユーザのホームディレクトリにある.bash_profileの内容を
変更することで実現可能です。
まずPATHを設定したいユーザのホームディレクトリ上に
.bash_profileがあることを確認します。
※「.」から始まるのでこれは隠しファイルになります。
lsコマンドだけでは出力されないのでls -a等で確認します。
[postgres@ssh_server ~]$ pwd
/home/postgres
[postgres@ssh_server ~]$ ls -a
. .. .bash_history .bash_logout .bash_profile .bashrc .psql_history data
この.bash_profileの中身を確認してみると以下のようになっていると思います。
このファイルの最終行に、追加したいディレクトリを記載してあげると
永続的にPATHを通すことが出来ます。
[postgres@ssh_server ~]$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
今回の場合だと/usr/pgsql-13/bin/を追加したいので、
以下の様に追記をしてあげます。
[postgres@ssh_server ~]$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
export PATH=$PATH:/usr/pgsql-13/bin/
この記事が気に入ったらサポートをしてみませんか?