はじめに
この記事はC3 Advent Calendar 2023 3日目の記事です。
こんにちは、エイです!
今回は、Linuxで、環境変数のPATHを整形出力で見やすくして、それを永続化をする方法を紹介します!
私は、ubuntu22.04の環境で行いました。
流れ
- 記事を書いた背景
- 手順
- 設定するためのファイルを探す
- シェルの設定をする。(コマンドを書き込む)
- シェルの設定を反映
- 使ってみる
- おわりに
- 参考記事
1.記事を書いた背景
学校の実験や自分が参加しているイベントで、低レイヤーに触れる機会があり、printenv
を初めて知りました。そして、環境変数のPATHの部分を見たのですが、、見づらい🥺
echo $PATH
やprintenv 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のパイプ処理をつかってecho
とtr
を実行するコマンドを、
mypath
という名前で別名定義しています。
そうすると、改行できました!
しかし、環境構築でごちゃごちゃしていたときの残骸が、。
というわけで、次の項目です!
PATH内の重複を無くす
こちらも、.bashrc
を編集しましょう。
以下のコマンドを.bashrc
の末尾に追加します。
export PATH=$(printf %s "$PATH" | awk -v RS=: -v ORS=: '!arr[$0]++')
コマンドの内容は以下の通りです。
-
export
: 環境変数を設定・定義・更新するコマンド -
printf
: データを整形して表示するコマンド -
awk
: コマンドライン上で文字列をいろいろ操作できるコマンド
awk
とprintf
で、
「:」の区切りごとで被っていないものだけを取り出し、
整形出力をし、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. 参考記事
今回参考にさせていただいた記事です!