ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

初心者がFreeBSDをいじる会コミュのbashをログインシェルにするの覚え書き

  • mixiチェック
  • このエントリーをはてなブックマークに追加
今回はシェルです。
bashのインストールです。
FreeBSD6.1-STABLEです。

デフォルトでのシェルを調べてみると…
$ echo $SHELL
/bin/sh

とでて、shになっている。
で、現在選択できる(ログイン)シェルの一覧は…
$ cat /etc/shells

# $FreeBSD: src/etc/shells,v 1.5 2000/04/27 21:58:46 ache Exp $
#
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.
/bin/sh
/bin/csh
/bin/tcsh

とでる。shとcshとtcshの3つ。使いたいbashが入ってない。
当然コマンドプロンプトからシェルを変えようとbashと打っても
bash: Command not found.
とすげなく言われる。
途中の英文は、「ftpdはこれらのシェルを使用してないユーザーがコネクトすると認めない」
だろうか、まあ今これは飛ばそう。
ところで、unixを使ってると英文が多くていちいち辞書をひくのが面倒だったんですが、
最近Yahoo!翻訳ってwebページがあることを発見、入力したテキストを日本語に訳してくれる
ので便利です。
http://honyaku.yahoo.co.jp/transtext

インストールされてなくて使えないのか、されてて使えないのかもよく分からないので、
findコマンドでbashとつくファイルをとりあえず検索してみる。
→find 検索開始ディレクトリ -name 検索ファイル名 -処理方法(ここではlsで一覧表示) 
最後の&はバックグラウンドで実行。fgコマンドでフォアグラウンドに切り替え。
bash*の*はbash〜ってこと。

$find / -name "bash*" -ls &
[1]565 ←ジョブ番号1、プロセス番号565

で、出てきたのが
/usr/ports/shells/bash
/usr/ports/shells/bash-completion
/usr/ports/shells/bash2

portsにしかないってことは、まだインストールはされてないってことだろう。
ということで、portsを使ってインストールしてみよう。
その前に、この3つのうちのどれをインストールするのか決めなければいけない。
bash2はbashの機能拡張版らしい。その分サイズはでかくなるのだろう。
bash-completionのほうはbashの補完機能拡張パッケージというものらしい。
とりあえず普通のbashというものをインストールしてみよう。

/usr/ports/shells/bashに移動。
ファイルを眺めると、
Makefile files pkg-descr pkg-plist
distinfo pkg-deinstall pkg-install
こんな感じ。
で、スーパー・ユーザーになって、ここで、
# make install clean
これだけでいいらしい。簡単だ…!
すると、ずらっとAttempting to fetch form 〜とgnu.orgからファイルを取ってきている
様子が出てくる。
…が、途中から様子がおかしい。bash-31-010をもってくるのに、
いろんなとこにつなげてるのだが、size mismatch とでてやり直しみないな
状況になっている。
最後に
=> Couldn't fetch it - please try to retrieve this
=> port manually into /usr/ports/distfiles/bash and try again.
*** Error code 1
とでて、失敗。
上記の/usr/ports/distfiles/bashを覗くと、bash31-009までしかない。。
CDからインストールしてもいいんだが、なんか悔しいので、もう少し調べる。

あまり期待できないが、Packagesでインストールしてみる。
さきほど、make install したbashディレクトリで、
# pkg_add -r bash

アレ…できた。しかも早い。
ほんとにできたのか怪しいので、pkg_infoで見ると、
bash-3.1.10_1 The GNU Project's Bourne Again SHell
とある。
# cat /etc/shells
とすると、さっきはなかった
/usr/local/bin/bash の一行が追加されている。

ふーん。
でもあいかわらずbashと打っても
bash: Command not found.
とすげなく言われる。

ここは…再起動だな。

で、めでたく使えました。

$ bash
[arata2@Salt /usr/home/arata2]$
こんな感じで。

これをログインシェルにするには…
$ chsh
でエディタで立ち上がった情報ファイルの
Shell: のとこを /bin/shから/usr/local/bin/bashに書き換える。

で、再ログインしてみると、ちゃんとログインシェルとして最初から起動している。

今度はプロンプトの部分を使いやすく変更してみる。

bashの設定ファイルは、
/etc/profile (システム全体としての設定を記述。ログイン時に読み込まれる)
~/.bashrc (ユーザーによる設定ファイル。シェル起動時に読み込まれる)
~/.bash_profile (ユーザーによる設定ファイル。ログイン時に読み込まれる)
の3つ(~は各ユーザーのホームディレクトリを表す)
下2つは自分で作ってやらなきゃいけないみたい。
試しに自分のホーム下をのぞくと.bash_historyってファイルができている。
(普通のユーザーはlsにオプションで-aをつければ最初に"."がつく設定ファイルも
一覧表示できる)
fileコマンドで調べると、ASCII text とあるので、
catで中をみると
$ bash
exit
と書いてある。まぁ…その名の通りコマンド履歴のようなものか…。

んで、プロンプトの使用変更は.bashrcに書くといいらしいので、
まずスケルトン(雛形)を/usr/share/skelにdot.bashrcという名前で作成する。
プロンプトの形状はシェル変数PS1によって決まるらしいので、

PS1="[\u \w]\$ "

と記述。
それぞれ、
\u ユーザー名
\w 現在のディレクトリ
\$ UIDが0なら#、それ以外は$
って意味らしい。

で、自分のホーム下にコピー
# cp dot.bashrc ~/.bashrc
で、シェルの設定ファイルをすぐ読み込ませるには
# source .bashrc

しかし、気に入らないことが1つ。
suでなったスーパー・ユーザーでプロンプトの最後が
#にならずに$になってしまうということ。
idコマンドで調べると、ちゃんとuid=0となっていて、
PS1に読み込ませた\$で、uidが0なら#になるはずなのだが…。
しかたなく、root下の.bashrcファイルを
PS1="[\u \w]# "
と書き換える。

以上。

コメント(0)

mixiユーザー
ログインしてコメントしよう!

初心者がFreeBSDをいじる会 更新情報

初心者がFreeBSDをいじる会のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。