20200310のLinuxに関する記事は7件です。

【Linuxコマンド】exportコマンド|環境変数やシェル変数を設定する

この記事では、《exportコマンド》について、
業務を通して学習した内容をまとめています。

  • exportコマンド とは…?
  • exportコマンド の使い方

こういった内容についてまとめています。

※本記事は、自分で学習したことのまとめ用として書いています。
尚、解説で誤った点があれば、スローして頂ければ喜んでキャッチしますのでお願い致します。

【概要】 exportコマンド とは…?

exportコマンドは、環境変数やシェル変数を設定するコマンドで、

以下の2つの使い方があります。

  1. 『シェル変数』を『環境変数』に設定する
  2. 指定した『環境変数』を削除する

Linux環境で使用する変数には、シェルからのみ参照できる…

『シェル変数』

と他のコマンドやプログラムからも参照できる…

『環境変数』

があります。

exportコマンド の使い方

exportコマンドの書式は、以下の通りです。

export [オプション] [変数名]
オプション 説明
-n 指定した環境変数を削除する。
-p エクスポートされている環境変数のリストを表示する。

それでは、先ほど紹介した2つの使い方の例題を見ていきましょう。

  1. 『シェル変数』を『環境変数』に設定する
  2. 指定した『環境変数』を削除する

使い方①: 『シェル変数』 を 『環境変数』に設定する

export [変数名]

例えば・・・

  • シェル変数: greeting="Hello World"

の場合は、下記のようになります。

--- 例題 ---

#!/bin/bash

greeting="Hello World"
export greeting

--- 実行結果 ---

シェルを実行したら、実際に環境変数greetingが登録されているか、確認してみましょう。

確認するには、printenvコマンドを使用します。

設定されている環境変数の一覧が表示されてしまうため…
grepコマンドと組み合わせて変数名を指定すると便利です。

$ . sample.sh
$ printenv | grep greeting
greeting=Hello World

使い方②: 指定した『環境変数』を削除する

『環境変数』を削除する場合は、-nオプションを使用します。

export -n [変数名]

例えば・・・

先ほど設定した環境変数のgreetingを削除する場合は、下記のようになります。

--- 例題 ---

sample.sh
#!/bin/bash

export -n greeting

--- 実行結果 ---

$ . sample.sh 
$ printenv | grep greeting
# 何も表示されない
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Vue CLIのバージョンが上らず困った件

概要

vue create を実行するために、Vue CLIのバージョンをあげようとしたらすごく初歩的なミスで躓いたので、同じようなミスをしてしまった人のためにメモしておきます。

vue create したい

nakanohatonoMBP:~ hayato$ vue create vue-chatkit
  vue create is a Vue CLI 3 only command and you are using Vue CLI 2.9.6.
  You may want to run the following to upgrade to Vue CLI 3:
  npm uninstall -g vue-cli
  npm install -g @vue/cli

Vue CLIのバージョンが古い。3以上じゃないとダメらしい。

@vue/cli の更新(再インストール)

言われた通り、
"npm uninstall -g vue-cli" と "npm install -g @vue/cli" を実行。

nakanohatonoMBP:~ hayato$ npm uninstall -g vue-cli
up to date in 0.062s
nakanohatonoMBP:~ hayato$ npm install -g @vue/cli
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated core-js@2.6.11: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
/Users/hayato/.nodebrew/current/bin/vue -> /Users/hayato/.nodebrew/current/lib/node_modules/@vue/cli/bin/vue.js
> fsevents@1.2.11 install /Users/hayato/.nodebrew/current/lib/node_modules/@vue/cli/node_modules/fsevents
> node-gyp rebuild
No receipt for 'com.apple.pkg.CLTools_Executables' found at '/'.
No receipt for 'com.apple.pkg.DeveloperToolsCLILeo' found at '/'.
No receipt for 'com.apple.pkg.DeveloperToolsCLI' found at '/'.
gyp: No Xcode or CLT version detected!
gyp ERR! configure error 
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack    at ChildProcess.onCpExit (/Users/hayato/.nodebrew/node/v13.3.0/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:351:16)
gyp ERR! stack    at ChildProcess.emit (events.js:219:5)
gyp ERR! stack    at Process.ChildProcess._handle.onexit (internal/child_process.js:274:12)
gyp ERR! System Darwin 19.0.0
gyp ERR! command "/Users/hayato/.nodebrew/node/v13.3.0/bin/node" "/Users/hayato/.nodebrew/node/v13.3.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/hayato/.nodebrew/node/v13.3.0/lib/node_modules/@vue/cli/node_modules/fsevents
gyp ERR! node -v v13.3.0
gyp ERR! node-gyp -v v5.0.7
gyp ERR! not ok 
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.11 (node_modules/@vue/cli/node_modules/fsevents):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.11 install: `node-gyp rebuild`
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1
+ @vue/cli@4.2.3
updated 1 package in 35.557s

Vue CLIのバージョンが上がったっぽい!

Vueのバージョン確認

nakano-hayatonoMacBook-Pro:~ hayato$ vue --version
2.9.6

変わってない。。

install時のログを再確認してみる

/Users/hayato/.nodebrew/current/bin/vue ->
/Users/hayato/.nodebrew/current/lib/node_modules/@vue/cli/bin/vue.js

Vueのいるパスが変わってるっぽい。

環境変数(.bash_profile)に新しいVueのいるパスを追加

"export PATH=~/.nodebrew/current/lib/node_modules/@vue/cli/bin" を追加。

nakanohatonoMBP:~ hayato$ vi .bash_profile 
nakanohatonoMBP:~ hayato$ cat .bash_profile 
export PATH=~/.rbenv/shims:/usr/local/bin:$PATH
eval "$(rbenv init -)"
export PATH=/usr/local/opt/mysql@5.6/bin:$PATH
 export PATH=~/.nodebrew/current/lib/node_modules/@vue/cli/bin
 export PATH=$HOME/.nodebrew/current/bin:$PATH
 export PATH=~/.nodebrew/current/bin:$PATH
 export PATH=$HOME/.pyenv/shims:$PATH
nakanohatonoMBP:~ hayato$ source .bash_profile
nakano-hayatonoMacBook-Pro:~ hayato$ vue --version
@vue/cli 4.2.3

Vueのバージョンが上がった!が・・・

linuxコマンドが使えなくなる・・・

nakanohatonoMBP:~ hayato$ ls
-bash: ls: command not found
nakanohatonoMBP:~ hayato$ which
-bash: which: command not found

.bash_profileを再確認してみる

Finderで環境変数を確認 → :PATH$の記述が足りなかった
スクリーンショット 2020-03-10 20.29.02.png
追加した "export PATH=~/.nodebrew/current/lib/node_modules/@vue/cli/bin" の末尾に":PATH$"の記述が足りなかった・・・
そのため、追加パスがPATHに代入される以前に代入されていたパスたちが、追加パスで上書きされてしまっていた。
スクリーンショット 2020-03-10 20.29.16.png
"export PATH=~/.nodebrew/current/lib/node_modules/@vue/cli/bin" の末尾に":PATH$"の記述を追加。

sourceコマンドが使えない → ターミナルをあげなおせばOK

まだlinuxコマンドが使える状態じゃないのでsourceコマンドが使えず、環境変数の反映ができずにパニック。

nakano-hayatonoMacBook-Pro:vue_app hayato$ source ~/.bash_profile 
env: bash: No such file or directory

→先輩にターミナルの再起動で反映されることを教えてもらい救われる。

無事にlinuxコマンド復活。
vue createも使えるようになった。
環境変数について理解するいい機会になった。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

全ユーザのcronを綺麗に表示するワンライナー

いつも https://qiita.com/ironsand/items/fb05869080f6ed724816 にお世話になってました(ありがとうございます)

ユーザが多いと no crontab なユーザが多くて見難かったので、見やすく表示できるようにしました。

for user in $(cut -f1 -d: /etc/passwd); do echo -n :kaigyo1:[${user}]:kaigyo2:;\
 crontab -u $user -l 2>&1 ; done  | grep -v "no crontab" | sed s/:kaigyo1:/\\n\\n/ \
 | sed s/:kaigyo2:/\\n/

root ユーザ限定です。

出力イメージ

[root@myserver ~]# for user in $(cut -f1 -d: /etc/passwd); do echo -n :kaigyo1:[${user}]:kaigyo2:; crontab -u $user -l 2>&1 ; done  | grep -v "no crontab" | sed s/:kaigyo1:/\\n\\n/ | sed s/:kaigyo2:/\\n/


[a_san]
#Ansible: kirei ni suru
0 6 * * * /bin/bash /home/a_san/hamigaki.sh >> /tmp/hamigaki.log
#Ansible: energy hokyu
10 6 * * * /bin/bash /home/a_san/asa_gohan.sh >> /tmp/asa_gohan.log


[c_san]
#Ansible: miharasi ii
1 10 * * 0 /usr/bin/yamanobori --config /etc/yamanobori.yml /etc/yamanobori_action_file.yml

(b_sanは no crontab なイメージ)

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Docker on Linux でホストPCのホスト名を取得する

ブリッジネットワーク使用時、Windows, Macでは、コンテナ内からhost.docker.internalが解決でき、それでホストPCと繋げられるそうです。

が、なぜかLinuxでは、20200310現在、その機能がありません。そのうちできるようになりそうな気配はありますが・・・。

それまでは、この方法で、コンテナ立ち上げ時にホストIPを渡せば良いみたいです。

docker run -it --add-host=host.docker.internal:$(ip route | grep docker0 | awk '{print $9}') debian bash
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

WSLでemacsを使うまでメモ

はじめに

emacs入門中なので会社のパソコンでもemacsでちょこっと遊べたらいいなと思い、軽くやり方調べたのでまとめます。
windows10前提です。

WSLの有効化

コントロールパネル
  ↓
プログラムと機能
  ↓
Windowsの機能の有効化または無効化
  ↓
Windows Subsystem for Linuxにチェック
  ↓
OK。再起動したら有効になる旨のメッセージが出るので再起動。

linux の選択

Microsoft Store開く
  ↓
wslで検索
  ↓
いくつかのディストリビューションが選べるので選択して入手。

ubuntu,debian,openSUSE,kali,centosなどがあるみたいです。
centosは有料(といってもたったの230円ですが)
私はなんとなくdebianにしました。

設定1

linuxのコンソールが起動するとusernameとpasswordの設定だけ求められたので入力。
このへんはディストリビューションによって異なるのかも。

設定2

社内でプロキシサーバーがある場合その設定も必要です。(aptでエラーがでるので)

export http_proxy="http://username:passwd@proxyserver:port"
export https_proxy="http://username:passwd@proxyserver:port"

ちなみにこのときユーザー名やパスワードに記号が入っている場合%エンコードにしておく必要があります。

emacsをインストール

sudo -E apt update
sudo -E apt install emacs

さきほど設定した環境変数をsudoでも使うように-Eオプションをつけています。

とりあえずこれで使えるとこまで。以上。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Athlon 200GE(AMD)でDebian(Linux) & LXQtを動かす

はじめに

Athlon 200GEでPCを組み、Debianをインストールしてみるとデスクトップ環境が起動しませんでした。
色々調べて動かすことができたので、その方法を書いておきます。

環境

CPU: AMD Athlon 200GE
GPU: Raedon Vega 3(CPU内蔵)
マザーボード: ASUS PRIME B450M-A
OS: Debian 10.3
デスクトップ環境: LXQt

準備

  • DebianをインストールするためのUSBメモリを用意します。
  • Radeon™ Software for Linux® 19.50 Release Notes - AMDの「Radeon™ Software for Linux® version 19.50 for Ubuntu 18.04.3」からドライバ「amdgpu-pro-19.50-967956-ubuntu-18.04.tar.xz」をダウンロードし、USBメモリに入れておきます。

作業

  • 先ずは普通にDebianをインストールします。
    • インストールが終わって再起動すると、デスクトップ環境が起動せず、黒い背景に白い文字のコンソール画面が表示されます。
    • コンソール画面が表示されない場合は、Ctrl+Alt+F2などで表示されるはずです。
  • ログインして、ドライバの入ったUSBメモリを挿します。
  • スーパーユーザに切り替えて(sudoでも良し)、/mntにマウントします。
  • ホームディレクトリにでも中身をコピーしておきます。
  • 「amdgpu-pro-19.50-967956-ubuntu-18.04.tar.xz」を解凍します。
username@debian:~$ tar -xf amdgpu-pro-19.50-967956-ubuntu-18.04.tar.xz
  • 生成されたディレクトリに入り、スーパーユーザ(sudoでもOK)で次のコマンドを実行し、インストールします。
root@debian:/home/username# cd amdgpu-pro-19.50-967956-ubuntu-18.04
root@debian:/home/username/amdgpu-pro-19.50-967956-ubuntu-18.04# apt install ./amdgpu-core_19.50-967956_all.deb ./amdgpu-dkms_19.50-967956_all.deb
  • 結構時間がかかりますが、インストールが終われば完了です。/mntをアンマウントして再起動します。

おわり

以上の方法でデスクトップ環境が起動できるようになりました。
この解決法に辿り着くのに時間がかかってしまいましたが、わかってしまえば面倒くさいだけで簡単な作業でした。

参考文献

How to install official AMDGPU linux driver with kernel 4.19.x on Stretch and Buster

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

linuxで使う状態確認コマンド

作成や更新系は省き、業務で使っているlinuxの状態確認系のコマンドをまとめています。

osを確認
uname
uname -a # カーネル、リリース日など他の詳細も表示する
フルパスを確認
readlink -f ファイル名
tarファイルの中身を(解凍せずに)確認する
tar -tf ファイル名
zipファイルの中身を(解凍せずに)確認する
zipinfo ファイル名
現在ログインしているユーザーを確認
users
所属グループを確認
groups
設定されているcronを確認する
crontab -e
グローバルIPを確認
curl ifconfig.me
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む