☆☆ 新着記事 ☆☆

2018年10月9日火曜日

Linux コマンド格納場所一覧 と 環境変数(PATHを通すbash_profile)


1. 基礎知識
2. bash
3.Symlinl



1.基礎知識


Linuxコマンドの格納場所

/bin 基本コマンド

/sbin 管理者用コマンド

/usr/bin アプリケーションで利用する基本コマンド
 (CentOS 7に、Python3.x をインストールしたとき、Python3としてシム・リンクを貼ったりするディレクトリ。)

/usr/sbin アプリケーションで利用する管理者用コマンド

/usr/local/bin 追加したソフトやパッケージ用のコマンド

環境変数の読み込み順番

1. /etc/profile

2. ~/.bash_profile 

  上のファイルがなければ

   2-1. ~/.bash_login

   2-2. ~/.profile

3. ~/.bashrc

4. /etc/bashrc

5. bash実行

bash_profileは、bashシェル実行時に自動的に読まれるスクリプトが記述されている環境設定ファイルである。各ユーザーのホームディレクトリ直下にある。

Linuxで用いられる標準のシェル・プログラムは「bash」(ばっしゅ)である。bashの設定ファイルは全ユーザー共通の/etcディレクトリと,各ユーザーごとのホーム・ディレクトリに分かれており,各ユーザーの設定が優先される。

全ユーザー共通の設定

 /etcディレクトリには,/etc/bashrcファイルと,/etc/profileファイルという,bashの設定ファイルが配置されている。

 /etc/bashrcファイルには,全ユーザーに共通のエイリアスと関数が記述されている。標準では,シェルを起動した環境ごとのプロンプトが定義されているほか,ファイルやディレクトリを新規作成した場合にどのようなパーミッションが設定されるかが記述されている。

 例えばユーザーIDの値によって処理が変化する。例えば,Fedora 7では,ID99より大きい場合はumask 002が実行され,それ以外はumask 022が設定される。

 /etc/profileファイルには環境変数と起動プログラムが記述されている。



各ユーザーごとの設定

各ユーザーごとの設定は,エイリアスなどについては「.bashrc」ファイルに,環境変数と起動プログラムは「.bash_profile」ファイルに記述される。このほか,ログアウト時にのみ実行される「.bash_logout」ファイルと,コマンド履歴を記録する「.bash_history」ファイルも存在する。

全ユーザー共通の設定である/etc/bashrc/etc/profileと,各ユーザーごとの  .bash_rc.bash_profileの間には,呼び出し関係がある。

.bash_profileは,.bashrcを,.bashrcは,/etc/bashrcを読み出すようにあらかじめ指定されている。このため,あるユーザーがbashを起動すると,まず最初に全ユーザー共通の設定内容が適用され,そこに各ユーザーごとの個別の設定が上書きされる。

システムへのログイン時には,.bash_profile/etc/profileが読み出される。その後,例えばGNOME端末などのシェルを起動するたびに,.bashrcが読み込まれる。

しかし,.bash_profileは読み込まれない。従って,ログイン直後に1度だけ実行させたいプログラムは.bash_profileに記述するべきである。

2.PATHの確認
 
1) 確認方法1:
  コマンド【 echo $PATH (もしくは、env | grep PATH)
   (windowsの場合:> set %path%
 
   (CentOS 7の初期設定)
  [@  /]$ echo $PATH
  (結果)
  /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

  例えば、/usr/bin には、以下のようなpythonコマンドを識別するファイルがデフォルトで
  あります。

    $ ls -a /usr/bin | grep python
    python
    python2
    python2.7

  $ which python
  /usr/bin/python


 'python3' というコマンドで、'python3.7' を起動させる為に、以下のようなSymbolic Linkを、
 設定をしたりします。(詳細、後述)
  $ ln -s /usr/local/bin/python3.7 /usr/bin/python3
 
 (とあるシェアド・ホスティングの場合)
   [@  /]$ echo $PATH
 /usr/local/bin:/bin:/usr/bin 



 2) 確認方法2:
cat ~/.bash_profile
 (初期値)
  PATH=$PATH:$HOME/bin
  export PATH

more .bash_profile <- こちらがお勧め。


3) 確認方法3:
 >printenv (windowsの場合:> set

   環境変数の確認(PATH以外の情報も表示される)


 例) [ユーザ名 ~]$ printenv

  TERM=xterm
  SHELL=/bin/bash
  SSH_CLIENT=175.132.XXX.XXX 49433 2222
   SSH_TTY=/dev/pts/0

  USER=ユーザ名
  MAIL=/var/mail/ユーザ名
  PATH=/usr/local/bin:/bin:/usr/bin
  PWD=/home/users/0/ユーザ名
  LANG=ja_JP.UTF-8
  SHLVL=1

  HOME=/home/users/0/ユーザ名
  LOGNAME=ユーザ名

_=/usr/bin/printenv

 

**このリンクを見るべし!!


PIPをインストールできたはずなのに、pipコマンドが認識されない。

(Python get-pip.pyを実行してsuccessfully completed な筈。)

[ユーザ名 ~]$ cd pip

[ユーザ名 pip]$ ls -Xl

total 1624

-rw-r--r-- 1 ユーザ名 LolipopUser 1661676 2018-10-09 12:18 get-pip.py

[ユーザ名 pip]$ ls -a

.  ..  get-pip.py

[ユーザ名 pip]$ which pip

which: no pip in (/usr/local/bin : /bin:/usr/bin)  // ここ調べてないのね。

[ユーザ名 pip]$ pwd

/home/users/0/ユーザ名/pip

[ユーザ名 pip]$ which python

/usr/local/bin/python

[ユーザ名 pip]$

それは、そうですね。

だって、pipflaskなど、以下の --user オプションでダウンロードされたファイルは、

以下のフォルダに格納されているのですから。

/home/users/0/ユーザ名/.local/bin //ここに一杯入ってますね。

なので、PATH/home/users/0/ユーザ名/.local/bin を追加します。
 

3. bashの操作・管理

まず、bash_profileの所在の確認

ユーザ名 ~]$ ls -a
.  ..  .bash_history  .cache  .local  .python_history  .subversion  .viminfo  pip  web

という事で、bash_profileがないので作る。


(Touchの説明だけ)

>$touch .bash_profile

[ユーザ名 ~]$ touch .bash_profile

[ユーザ名 ~]$ ls -a

.  ..  .bash_history  .bash_profile  .cache  .local  .python_history  .subversion  .viminfo  pip  web

PATHの追加

>PATH=$PATH:/home/users/0/(user-name)/.local/bin // $PATHは、既存に追加するという意味。

>export PATH

なので、

PATH=$PATH://home/users/0/ユーザ名/.local/bin

export PATH

を実行する

 


 

vi エディタの起動直後では、コマンドモードになっているので、文字などを入力する事はできません。 文字を入力する場合には、モードを"入力モード"へ変更する必要があります。 コマンドモードから入力モードへ移行するには、以下のようにコマンドを入力します。 コマンドは大文字/小文字を区別しますので、注意して下さい。 コマンドモードで入力したコマンドは、エディタの最下部に表示されます。



i (インサート)

カーソルの位置から入力に入る


編集したならば、入力モードから一旦コマンドモードへ戻り、保存するかしないかを決定してviエディタを終了します。
コマンドモードへ戻るには、”Esc”(エスケープボタン)を押します。 1回押せばコマンドモードに戻りますが、不安な場合には数回押してもコマンドモードに戻ったままなので大丈夫です。 コマンドモードへ戻ったならば、以下の様なコマンドを入力してvi エディタを終了します。



q !

保存せずに終了する

wq

保存して終了する

 

vi .bash_profile

export PATH=$PATH:home/users/0/ユーザ名/.local/bin

wq

最後に, 設定を読み込むために, Terminalを再起動させるか, 以下のコマンドを打ちましょう.

$ source ~/.bash_profile

上手くいかず。方法2に

やり方

echo "export PATH=$PATH:home/users/0/ユーザ名/.local/bin " >> ~/.bash_profile

source ~/.bash_profile

なので、実行。

やっと通った!!!

(ちょっと追加)

[ユーザ名 ~]$ echo $PATH

/usr/local/bin:/bin:/usr/bin:home/users/0/ユーザ名/.local/bin

[ユーザ名 ~]$ echo "export PATH=$PATH:.local/bin " >> ~/.bash_profile

[ユーザ名 ~]$ source ~/.bash_profile

[ユーザ名 ~]$ echo $PATH

/usr/local/bin:/bin:/usr/bin:home/users/0/ユーザ名/.local/bin:.local/bin

(確認)

[ユーザ名 ~]$ python

Python 3.4.1 (default, May  8 2017, 14:41:02)

[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> import flask

>>> 

flask動いたーーーー!

4. SymLinkの設定・管理

root@ofcm9och /]# cd /usr/local/bin
[root@ofcm9och bin]# ls -a
.   2to3-3.6          idle3.6  pydoc3.6   python3.6m         pyvenv-3.6
..  easy_install-3.6  pip3.6   python3.6  python3.6m-config

[root@ofcm9och bin]# cd /
[root@ofcm9och /]# cd usr/bin
[root@ofcm9och bin]# ls -a   <- pipは存在しない。

git                               pic                       which
git-receive-pack       piconv                    whiptail
git-shell                    pinentry                  who
git-upload-archive  pinentry-curses           whoami
git-upload-pack        ping                      write
glib-compile-schemas   ping6                     x86_64
gmake                  pinky                     x86_64-redhat-linux-c++



$ ln -s /usr/local/bin/pip3.6 /usr/bin/pip3.6


[root@ofcm9och bin]# ln -s /usr/local/bin/pip3.6 /usr/bin/pip3.6
[root@ofcm9och bin]# ls -a  (symlinkが作成された)

glib-compile-schemas   pinky                     x86_64-redhat-linux-c++
gmake                  pip3.6                    x86_64-redhat-linux-g++


[root@ofcm9och bin]# python -m pip -V
/usr/bin/python: No module named pip
[root@ofcm9och bin]# python3 -m pip -V
pip 18.1 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)


参考)


 

0 件のコメント:

コメントを投稿