らずぱい日記

定年したので日記でもかくか。って感じ

あれ?タブ補完できんがな。

新しく作ったユーザーで作り方がまずかったのか?/homeにユーザディレクトリが
自動で出来てなかったが、いろいろ不都合が出てきた。
ログインすると$プロンプトだけやし(これはこれですっきりしていいけど)
って、これシェルがbashじゃないじゃん。
なので、キーボードでタブ補完やコマンドヒストリ↑キー機能が使えない。

 

1.まずsudoが使えるように
[USER_NAME]をsudoグループに追加する
$ sudo gpasswd -a [USER_NAME] sudo


2.ubuntuユーザから起動ファイル持ってきた。
$cd /home/[USER_NAME]
$sudo /home/ubuntu/.profile .
$sudo /home/ubuntu/.bashrc .

 

3./etc/passwd
/etc/passwd ってどうなっとるん?
$sudo vi /etc/passwd
やっぱ、/bin/sh になってる。

[New_User]:x:1001:1001::/home/[New_User]:/bin/sh

[New_User]:x:1001:1001::/home/[New_User]:/bin/bash

/bin/bashに変更してOK

 

以降は調べたのでもったいないからメモっておく。

■補完機能を使えるようにする
LinuxでTab補完ができないのはシェルがcshとか古いものになっている場合が多い
そもそもbash-completionがインストールされていれば問題なくすぐ使える。
入っていない場合
$sudo apt-get install bash-completion

でインストールして
補完機能を使えるようにするには”/etc/bash.bashrc“に”/usr/share/bash-completion/bash_completionを
読み込む設定を行います。

--------------
# enable bash completion in interactive shells
#if ! shopt -oq posix; then
# if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion ←ここのコメント"#"を消す
# elif [ -f /etc/bash_completion ]; then
# . /etc/bash_completion
# fi
#fi

-------------

強引だが、とな。

 

ちなみにbash起動時に実行される初期化ファイル
ユーザーがログインに成功した後、bashは「ログインシェル」として一般的に以下のような流れでファイルを順次検索し、ファイルが存在していれば実行し起動します。

1./etc/profileを実行
2./etc/profileによって、/etc/profile.dディレクトリ配下のすべてのファイルを実行
3.ログインユーザーのホームディレクトリにある̃/.bash_profileを実行*
4.̃/.bash_profileによって、̃/.bashrcを実行
5.̃/.bashrcによって、/etc/bashrcを実行

例えば、コマンドラインからのbashの起動、suコマンドで別のユーザーになった場合など、ログインシェルとしての起動ではない場合は、5のみが実行されます。

.bashrcファイルはテキストファイルのため、簡単に編集できる。編集しただけでは変更が反映されず、ログインし直すか、次のようにsourceコマンドを使用する必要がる。
$ source .bash_profile


そもそもubuntuユーザでLoginしてbashが使えて[New_User]でログインして使えないのって/etc/passwd をすぐに確認しなかったのが遠回りになった。
少しづつ思い出してきたかな。