2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

環境変数のPATHを整形出力で見やすくして、永続化をする方法

Last updated at Posted at 2023-12-02

はじめに

この記事はC3 Advent Calendar 2023 3日目の記事です。

こんにちは、エイです!

今回は、Linuxで、環境変数のPATHを整形出力で見やすくして、それを永続化をする方法を紹介します!
私は、ubuntu22.04の環境で行いました。

流れ

  1. 記事を書いた背景
  2. 手順
    1. 設定するためのファイルを探す
    2. シェルの設定をする。(コマンドを書き込む)
    3. シェルの設定を反映
    4. 使ってみる
  3. おわりに
  4. 参考記事

1.記事を書いた背景

 学校の実験や自分が参加しているイベントで、低レイヤーに触れる機会があり、printenvを初めて知りました。そして、環境変数のPATHの部分を見たのですが、、見づらい🥺

image.png

echo $PATHprintenv PATHというコマンドを実行して、
環境変数のPATHを表示させてみると分かると思います。
これは「:(コロン)」で区切られています。

見やすいようにしたいなーと思い、
記事を探して実践できたので、今回記事を書きました!
複数ある記事をまとめただけですが、読んでいただけると嬉しいです!

2. 手順

1. 設定するためのファイルを探す

ホームディレクトリでファイルの一覧を見るために、
以下のコマンドを実行します。

ls -a

そうすると、.bashrc.profile があると思います。
これらが、今回設定していくファイルになります。

ファイルが無い場合、これらの仲間として、

.bashrcは、.zshrc
.profile は、.bash_profile.bash_loginなどがあるため、

検索したり、こちらの記事を参考にしたりしましょう。



2. シェルの設定をする。(コマンドを書き込む)

コマンド自体の設定は、.bashrcに書き込みます。

PATHの整形表示

.bashrcを編集して以下のコマンドを追加しましょう。
(aliasが並んでいるところに記述すると、あとで見返しやすいと思います。)

alias mypath='echo $PATH | tr ":" "\n"'

mypathの部分は、他のコマンドに影響しなければ、
自分の好きな名前に変更できます。

コマンドの内容は以下の通りです。

  • alias : 別名を定義するコマンド
  • echo : 標準出力(コマンドプロンプト上に出力)するコマンド
  • tr : 文字を置き換えるためのコマンド

Linuxのパイプ処理をつかってechotrを実行するコマンドを、
mypathという名前で別名定義しています。

そうすると、改行できました!
しかし、環境構築でごちゃごちゃしていたときの残骸が、。

スクリーンショット 2023-10-18 215229.png

というわけで、次の項目です!

PATH内の重複を無くす

こちらも、.bashrcを編集しましょう。
以下のコマンドを.bashrcの末尾に追加します。

export PATH=$(printf %s "$PATH" | awk -v RS=: -v ORS=: '!arr[$0]++')

コマンドの内容は以下の通りです。

  • export : 環境変数を設定・定義・更新するコマンド
  • printf : データを整形して表示するコマンド
  • awk : コマンドライン上で文字列をいろいろ操作できるコマンド

awkprintfで、
「:」の区切りごとで被っていないものだけを取り出し、
整形出力をし、exportでそれを設定しています。



3. シェルの設定を反映

シェルの設定をしましたが、
それを反映させなければ動かすことが出来ません。

すぐに反映させるためには、
以下のコマンドを.profile に記述すれば反映されます。

source ~/.bashrc

この処理を.profile 記述したら、

以下のコマンドだけを実行してみましょう。

source ~/.profile

これで反映されたはずです!

4. 使ってみる

では最後に、
実際に反映されたか確認してみましょう!
私の場合、以下のコマンドを実行すると、

mypath

以下のように表示されました!
なーんかまだ被ってる…のは、き、気のせいですkit...

/home/ray03j/.volta/bin
/home/ray03j/.local/bin
/home/ray03j/.rbenv/shims
/home/ray03j/.rbenv/bin
/home/ray03j/.volta/bin
/home/ray03j/.progate/bin
/home/ray03j/.sdkman/candidates/java/current/bin
/home/ray03j/.local/share/pnpm
/home/ray03j/.nvm/versions/node/v16.15.0/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
…


3. おわりに

この記事が誰かの役に立つことを願っています!

今回この記事を書いて、自分自身もシェルについての理解が深まりました。もし、より良い方法があれば、ぜひ教えていただきたいです!!

C3AdventCalendarの他の部員の記事も
見ていただけると嬉しいです!

今回、読んでいただき本当にありがとうございました!

4. 参考記事

今回参考にさせていただいた記事です!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?