見出し画像

【51】【Linux】パスの意味や意外に削除が複雑。また、lsコマンドとcdコマンドの違い

この記事を読むと、シェル変数と環境変数、パスの意味や通し方、パスの削除の仕方を学ぶことができます。

ところで、lsコマンドとcdコマンドの違い分かりますか?
この記事を読むと両者の違いがはっきりと分かるでしょう。

シェル変数と環境変数

定義された変数の確認
echo

echo Linux

シェル変数を定義する

Linux='foobar'
(=との間にスペースが含まれるとエラーになるので注意)

変数の表示

echo $Linux

変数の解除

unset Linux
($を付けなくていい)

変数の確認

環境変数のみの確認
env
環境変数とシェル変数の確認
set

環境変数とシェル変数の違い
シェル変数はシェルが再起動したり、新たに起動したシェルからは参照できない。
永続的に使える変数が環境変数。
exportコマンドでシェル変数を環境変数にする。

FOOBAR='foobar'
export FOOBAR
echo $FOOBAR
unset FOOBAR

環境変数PATHとコマンド

内部コマンドと外部コマンド
コマンドは2種類ある。
内部コマンド
シェル自体に組み込まれているコマンド
外部コマンド
独立したプログラムとして存在するもの
実例:lsとcdコマンドの違い

which ls
/bin/ls

which cd
cd: shell built-in command

lsは/bin/lsとコマンドのパスが表示されたので外部コマンドです。
cdはcd: shell built-in commandと表示されたので内部コマンドです。

外部コマンドの仕組み
外部コマンドはそのコマンドがどこに置かれているのかを、
シェルが環境変数PATHに指定されたディレクトリから順に探していきます。
環境変数PATHにコマンドが置かれたディレクトリを追加することを、パスを通すといいます。

パスの追加方法

PATH=$PATH:/opt/bin
export PATH

注意!
PATH=/opt/bin
としてしまうと、シェルが/opt/binしか参照しなくなるので誤り。
$PATH:/opt/binとすることによって、既存のパスに追加されます。
また、追加したパスはシェル変数ですので、新たに起動すると、前の状態に戻ります。
exportすることによって、永続的に使えます。

パスの削除(結構複雑!!)

バスの削除は意外にややこしかった!
https://qiita.com/ironsand/items/10e28d7589298090ec23
を参考にしました。
.zshrcを編集します。
以下を追記

path_append ()  { path_remove $1; export PATH="$PATH:$1"; }
path_prepend () { path_remove $1; export PATH="$1:$PATH"; }
path_remove ()  { export PATH=`echo -n $PATH | awk -v RS=: -v ORS=: '$0 != "'$1'"' | sed 's/:$//'`; }

path_remove /opt/bin
とするとパスが削除されます。

Linuxに関する記事一覧

参考文献

Ping_T
Linux教科書 LinuCレベル1 Version 10.0対応

 最後に
私がブログを書く目的は、素晴らしい本や、素晴らしい方々の技術記事を知って頂きたいからです。ぜひ、上記の参考文献を見て下さい。(noteなので広告とかは一切ありません。)

現在、株式会社grabssに行くために最後の悪あがきをしています!!
現在の進行状況
51件目投稿。目標到達!!。
追加目標
20日までに100件目指す!!!(51件目)

よろしければ、スキボタン及びサポートお願いします。勉強の励みになります。


いいなと思ったら応援しよう!