- 投稿日:2019-10-20T22:36:49+09:00
新しく作ったユーザでタブ補完やコマンドの履歴が使えない場合
はじめに
これは、Linux初心者の私が、少し悩んでしまったことをメモとして記録したものですので、寛大な心でお読みください。
症状
・Ubuntu19.04にて、新しく作ったユーザで
・タブキーでコマンドの補完ができない
・矢印キーでコマンドの履歴を見れない
・シェルがモノクロ
などの症状がでる。原因
・それはbashではなく、shのシェルです。
解決策
・ようは、使用するシェルを変更すれば良いため、
・chshコマンドで使用するシェルを変更
・/etc/passwdのファイルから、変更するユーザの行のシェルを書き換える
などの方法がある。お好みで。※chshコマンドでbashに変更した場合
$ chsh パスワード: Changing the login shell for 〇〇〇(ユーザ名) Enter the new value, or press ENTER for the default Login Shell [/bin/sh]: /bin/bash (← 入力)そして、再接続か、bashコマンドでbashが起動する。
もし、bash以外を使用している方はbashのところを変更してください。
- 投稿日:2019-10-20T19:54:44+09:00
【画像あり】CentOS 8インストール後に再起動しても初期画面に戻る問題
(戒めも兼ねて)備忘録目的です。
背景&問題
MacでLinuxを触れてみようとVirtualBox → CentOS8をインストールしようとしたところ、何度インストールしても何事も無かったかのように初期画面に戻る問題が発生。
「公開されたばかりのCatalinaの互換性?それともセキュリティソフトの設定?あるいはダウンロード中に何かしらファイル破損、もしくは...」と1日半ほど勝手に迷走しておりました。環境
・ VirtualBox: 6.0.14 r133895
・ ホストOS: MacOS Catalina 10.15
・ ゲストOS: CentOS 8.0.1905原因&解決
起動時のブートメディアのHDD優先順位が光学より下だったことが原因でした(※画像は修正したもの)。
ブートローダがインストールしたCentOSを再起動で選ぶのにHDDが後だと初期の画面(でもインストールで容量は埋まってる)になっていた模様。
その他
非エンジニアで学習のため、表現ミス等あればどうぞご指摘ください?♂️
参考にさせて頂いたURL
https://teratail.com/questions/217845
http://park12.wakwak.com/~eslab/pcmemo/boot/boot3.html
https://wa3.i-3-i.info/word15558.html
- 投稿日:2019-10-20T15:23:50+09:00
Mac,Windows,Linux(Raspberry pi)で共通のファイルシステムでファイルをやりとりする(NTFS)
なぜやるのか
Mac,Windows,Linux(Raspberry pi)で共通マウントできる記録デバイスが欲しい。
これまでにやったこと
最初はMac-Raspberry pi(以降ラズパイ)間でやりとりできれば良いということでMacにfuse-xfsとか入れましたが、うまくフォーマットできず断念。
ラズパイ側でxfsフォーマットしてもなぜかMac側でマウントできなかった。
Mac側ではフォーマットができなかった。。。やったこと
ラズパイにUSBでHDDをつないで
root@raspberrypi:~# parted /dev/sda GNU Parted 3.2 Using /dev/sda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) mklabel gpt (parted) mkpart Partition name? []? primary File system type? [ext2]? ntfs Start? 0 End? -0 Warning: The resulting partition is not properly aligned for best performance. Ignore/Cancel? Ignore (parted) p Model: Jmicron Corp. (scsi) Disk /dev/sda: 500GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 17.4kB 500GB 500GB ntfs primary (parted) q root@raspberrypi:~# mkfs.ntfs -f /dev/sda1でNTFS作成
Mac側ではntfs-3gをインスコして
sudo su - ntfs-3g /dev/disk2s1 /mnt/ -olocal -oallow_other/mntにread/writeでマウントできました。
Macでsudo cp hogehoge /mnt/とファイルコピーした際に~ Operation not supported on socketとか出たけど書き込んだファイルの中身をラズパイ側で確認&書き込み出来たので気にしない。
※Winで読み書きできるかはまだ未検証(2019/10/20現在)
- 投稿日:2019-10-20T14:18:56+09:00
Ruby on Railsにスタイルを反映させる手順
概要
Webアプリのscssファイルを更新しても本番環境に変更が反映されませんでした。
httpdリスタートしたりpassengerをリスタートしたりしま
したが変わらず。。。解決方法
何が問題なのかと調べた結果、こちらを参考にしました。
環境
ruby 2.3.3
rails 5.1.7
SAKURA VPS
CentOS 6手順
$ rm -rf public/assets $ rm -rf tmp/cache $ bundle exec rake assets:precompile $ sudo service httpd restart1,2行目:実行するプロジェクトのassets,cacheフォルダを削除
3行目:プリコンパイルを行う
4行目:httpdをリスタート以上の流れで、変更したscssファイルが反映されました。
私としては、アプリで利用するファイルの一部が残っていたので削除してもう一度作り直す、という理解になっています。何か違う!というのがあれば教えてください!!
- 投稿日:2019-10-20T11:50:07+09:00
bashスクリプトの最初の方に書いておくと少しだけ安心できる数行のコード
テストを完走したスクリプトが本番環境で動かない!などの不安を和らげる数行のコードで、個人的によく使う 3つを紹介します。
1. 環境変数 $PATH
systemd から実行したら動かないなどの問題が起きないように、環境変数
$PATH
の値を最初に整えます。スクリプト内で各コマンドをフルパスで書くより、環境変数をテスト環境と同じにした方が安心です。for _path in $(echo "/usr/local/sbin:/usr/local/bin:/usr/sbin:/opt/myapp" | tr ':' '\n'); do echo ${PATH} | tr ':' '\n' | grep -q "^${_path}$" || PATH+=":${_path}" done現在の
$PATH
に含まれないパスが"/usr/local/sbin:/usr/local/bin:/usr/sbin:/opt/myapp"
の中にあれば$PATH
に追加されます。区切り文字の:
を改行に置換して各パスを行に区切ることでgrep
での比較をしやすくしています。
(重複やべき等を気にしなければ、単にPATH+=
で追加すればいいだけですが)2. 多重起動防止
ファイルなどのリソースを操作するスクリプトで安心できるようになります。
(( $$ == $(pgrep -fo "$0") )) || exit 1「同じコマンドライン文字列で実行された最も古いプロセス」が現在のプロセスなら通過、違っていたら多重起動と判定して異常終了します。実行時のコマンドライン文字列がいつも同じであることが条件になります。
3. 終了処理
trap
で指定した関数on_exit()
が終了時に実行されます。とりあえず書いておけば、スクリプト作成中に思いついた終了処理をすぐに追加できます。function on_exit() { # $1: exit code } trap 'on_exit $?' EXITスクリプト内では、エラーで終了したいコマンドや関数の呼び出しを
somecommand || exit $?
のように書きます。関数
on_exit()
では終了コードの値を見て、正常終了時/異常終了時/共通の処理をそれぞれ記述することができます。function on_exit() { if (($1 == 0)); then echo "Completed." else echo "Failed ($1)." >&2 fi echo "Bye." }+1.
sh が bash にリンクされているかどうかに関係なく、使用するシェルは明示的に宣言します。
#!/bin/bash
参考リンク
- 「UNIX & Linux コマンド・シェルスクリプト リファレンス」 https://shellscript.sunone.me/
- 「“応用力”をつけるためのLinux再入門」 https://www.atmarkit.co.jp/ait/series/3016/