柴犬のブログ

柴犬のブログです(プログラミング学習等)

環境変数PATHに値を永続的に設定する

昨日の記事で紹介したPATHを通す方法、

export PATH="$PATH:/usr/sbin"

をするだけだと、ログアウトした時点でPATHの設定は消えてしまいます。

なので今日はPATHを永続化する方法を書いていきます。

~./bashrcに記載する

ホームディレクトリにある~./bashrcをvimやnanoなどのエディタで開き、一番下の行などに

export PATH="$PATH:/usr/sbin"

を追記します。 変更を保存してエディタを閉じます。

$ source ~/.bashrc

をターミナルで実行し、変更を反映させます。

これでログアウトしても環境変数が設定されたままになりました!

注意点

ユーザのホームディレクトリの中にある設定ファイルはそのユーザにしか適用されません。 なのでrootや他の一般ユーザでログインすると今回設定した環境変数PATHは使えません。また、bash用の設定ファイルに記述しているため、使用するシェルを変えた場合も同じくダメです。 その場合、/etc/profileでPATHを設定するなどして対応します(たぶん)🤔

Linuxの学習をしていてcommand not foundて言われた時の対処法

f:id:undershibadog:20200128215734j:plain

Linuxの学習をサイトや本などでしていて、「このコマンドを打ち込んでください」と言われて自分のLinux環境で打ち込むと -bash: hoge: command not found って言われる場合の対処法

VPS上にLinuxをインストールして学習しているような状況だとOSが最小構成でインストールされていてるので。余分な設定などが省かれてしまっており、「そのコマンドないよ!」っていわれやすいはず。

  • 環境:さくらVPS
  • OS:Debian10.2
1.コマンドはLinux上にあるがPATHが通っていないだけなのかを調べる。

パスを通すとは環境変数($PATH)の記述を変えて、コマンド検索パスを追加することです。 $ whereis コマンド名 whereis はコマンドがあるか、ある場合コマンドの場所を教えてくれる。 hitした場合、コマンドのあるディレクトリの場所をPATH に設定する。

export PATH="$PATH:/usr/sbin" これでコマンドが使えるようになるはず!※これで設定したコマンドはログアウトすると使えなくなります。永続化するには~/.bashrcなどに記述する。

2.コマンドがLinux上にないのでパッケージマネージャで入れる。

whereis やってなかったらないです。ないと思います。 なのでパッケージマネージャから探します。 apt search コマンド名 aptの部分はディストリによって置き換える。 コマンドが素直に見つかればそのままinstall。

何件か検索結果がhitしたけど、コマンド名がないって場合はヒットしたパッケージの一部としてコマンドが提供されてる場合があります。

自分の場合はpstreeはpsmisc,lwp-requestはLibwww-perlっていうパッケージの中に含まれていた。 ヒットしたパッケージの中でそれっっぽいやつをググる

まとめ

whereisで探してPATHを通す。パッケージマネージャで検索してinstallする。

参考文献等

CSS position勉強

とりあえずスクールの日報ほぼそのままw

  • position 理解

    今日は何を学んだのか

Q: position:absoluteである要素を配置する時、その親要素にposition:relativeを指定するのはなぜか?

A:別にrelativeである必要はないし、直近の親要素にrelativeを指定しなくちゃいけないわけでもない

CSS の position プロパティは、文書内で要素がどのように配置されるかを設定します。

positionがとる値は5つ - static - relative - absolute - fixed - sticky

1. static

規定値

要素は文書の通常のフローに従って配置されます。 top, right, bottom, left, z-index プロパティは効果がありません。これが既定値です。

何にもしないやつ

2. relative

要素は文書の通常のフローに従って配置され、 top, right, bottom, left の値に基づいて自分自身からの相対オフセットで配置されます。

potisionを指定しなかった場合(static)の自要素を基準として配置位置を決める

3. absolute

要素は文書の通常のフローから除外され、ページレイアウト内に要素のための空間が作成されません。直近の配置されている祖先があれば、それに対して相対配置されます。そうでなければ、初期の包含ブロックに対して相対配置されます。最終的な位置は top, right, bottom, left の値によって決定されます。

包含ブロックって何?

多くの場合、包含ブロックは要素から見て直近のブロックレベルの祖先のコンテンツ領域ですが、常にそうとは限りません。 多くの開発者が、要素の包含ブロックは常に親要素のコンテンツ領域であると信じていますが、それは必ずしも正しくありません。 包含ブロックを識別するプロセスは、要素の position プロパティの値に全面的に依存します。

  1. position:static,relativeの場合、包含ブロックは直近の祖先要素のコンテンツボックスの辺によって構成される
  2. position:absoluteの場合、包含ブロックは position の値が static 以外 (fixed, absolute, relative, sticky) の直近の祖先要素が基準になる。 →直近の親要素にrelativeを指定しなくちゃいけないわけではない、おじいちゃん要素とかでも良い
  3. position:fixed の場合、包含ブロックはビューポート (連続的なメディアの場合) 又はページ領域 (ページメディアの場合) によって確立されます。→ブラウザのウィンドウが基準になる。

    4. fixed

    要素は文書の通常のフローから除外され、ページレイアウト内に要素のための空間が作成されません。ビューポートによって定められた初期の包含ブロックに対して相対配置されます

基本的にはブラウザのウィンドウを基準に配置される(ユーザーから見るとずっと表示されているように見えるはず)

5. sticky

要素は文書の通常のフローに従って配置され、直近のスクロールする祖先および包含ブロック (直近のブロックレベル祖先、表関連要素を含む) に対して top, right, bottom, left の値に基づいて相対配置されます。

fixedと似ているが要素にひっつく 記事の中段ぐらいまでこの要素は表示したい!みたいなときに使えるっぽい 追従広告みたいなものが作れる?

position:absolute例:

<body>
  <div class="grampa">
    <div class="father">
      <p class="son">
      </p>
    </div>
  </div>
</body>
* {
  margin: 0;
}

.grampa {
  background-color: blue;
  width: 600px;
  height: 600px;
  position: relative;
}

.father {
  background-color: red;
  width: 400px;
  height: 400px;
}

.son {
  background-color: yellow;
  width: 200px;
  height: 200px;
  position: absolute;
  bottom: 0px;
  right: 0px;
}

とかやると f:id:undershibadog:20191218232824j:plain みたいになって absoluteを指定した要素が自身から見ておじいちゃんである要素の右下を基準に配置されているのがわかる。

See the Pen OJICHAN by UnderShibaDog (@undershibadog) on CodePen.

0.25xにして見てください🙏

codepen -OJICHAN

参考サイトなど

position -MDN

レイアウトと包含ブロック - MDN

CSSでpositionを使い要素を並べる|static、relative、absolute、fixedを解説

CSS : positionの「absolute」「relative」「fixed」のリファレンス

CSSのposition:absolute;とは?要素を思いのままに配置する方法