.bashrc

bashを使うときに、使いやすくするための設定をします。

設定ファイルについて(引用:bashの仕様)

bashはログインシェルとして起動すると、/etc/profile、~/.bash_profile、~/.bash_login、~/.profileの順番で各ファイルをログイン時に一度だけ読み込んで実行します。

ユーザーがログインした後に、ターミナルエミュレータを開くことで起動するシェルを実行したり、コマンドラインから別のシェルを起動したりすることも可能です。これを非ログインシェルと呼びます。

bashは非ログインシェルとして起動した場合、~/.bashrcがあれば起動のたびにこれを読み込んで実行します。

Linux教科書 LPIC レベル1 スピードマスター問題集 Version5.0対応

説明の追加

英語では、login shellとnon-login shellとなります。

設定ファイルについて

Macを使う限りにおいては、
.bash_profileに. ~/.bashrcと一行書き、
.bashrcに設定を書き連ねる、
という方針で良いと思います。

Macでは、
.bash_profileにecho ‘I am your .bash_profile.’と書き、
.bashrcにecho ‘I am your .bashrc.’と書いて、
ターミナルを起動すると、
I am your .bash_profile.だけが表示されます。
2つ以上のターミナルを起動していっても同様の結果となります。
tcshまたはbashを使っていて、bashとタイプしてEnterを押すと、’I am your .bashrc.’だけが表示されます。

Macで使いにくい設定になることがないようにと考えると、上記の方針が無難と思います。

余談 1

実際に1つの開発で、協力会社のある担当からcshスクリプトが送られてきて、違う担当からbashスクリプトが送られてきたことがあります。
こういう状況のときは、tcshを使っていて、bashとタイプしてEnterを押す、とするのが最も早いです。
ちなみに協力会社はとても有名な外資系の大企業です。実際にスクリプトを作成したのは、インド人や中国人だったのかもしれません。

シェルスクリプトはshで書け、みんな幸せ、が正解なのですが、そういうことを教えてくれる人や本に出会う機会は少なすぎるので、仕方がないと諦めるしかありません。

余談 2

端末から、計算能力の高い計算機にloginして作業して、作業が終わったらlogoutする、ということを経験しないと、login shellやnon-login shellが何の役に立つのかわからない気がします。

.bash_profile

~/.bash_profile

. ~/.bashrc

shell script内で.を使って他のshell scriptを呼び出し、shell scriptを実行すると呼び出し元の変数にも影響があります。
sourceを使ってshell scriptを実行すると呼び出し元の変数には影響がありません。

.bashrc for Ubuntu

~/.bashrc

PATH=/usr/pkg/bin:$PATH
export PATH

# LANG=C
LANG=ja_JP.UTF-8
export LANG

# LC_ALL=C
LC_ALL=ja_JP.UTF-8
export LC_ALL

LESSCHARSET=utf-8
export LESSCHARSET

HISTSIZE=16384
export HISTSIZE
HISTFILESIZE=262144
export HISTFILESIZE

alias ls="\ls -F"
alias ll="\ls -FAlh"
alias la="\ls -FA"

alias grep="grep -E -n"
alias gr=grep

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\n\$ '

説明します。

LANG=ja_JP.UTF-8

LANG変数を作ってja_JP.UTF-8を代入する。

export LANG

LANG変数を環境変数にする。

PATH=/usr/pkg/bin:$PATH

:をデリミタとして実行可能なファイルがあるディレクトリの一覧を記述している。

既に$PATHの中には/bin/usr/binなどなどが入っているはずで、それよりも先に/usr/pkg/binに同じ名前の実行可能なファイルがあれば、それを実行しろ、という意味になる。

普通は$PATH:/XXX/YYYのように後ろに記述する。LD_LIBRARY_PATHなども同様に記述する。


spaceが無ければ単一引用符や二重引用符を使わなくても期待通りの動作をします。
http_proxy=http://1x2x3.tech:80/


alias ls="\ls -F"

aliasは別名を与える。

\lsはすでにlsaliasが付けられている場合にaliasなしのlsにすることを意味する。

ここからはpromptについて説明します。

PS1はpromptです。PS2もあります。PS3もあります。
Ubuntuのdefaultは下記です。

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

${debian_chroot:+($debian_chroot)}は、ほぼすべてと言っていいほとんどの人に関係ないので無視して大丈夫です。
(かと言って、積極的に削除する必要もないのでcopy .bashrcでは残しています。)
\hはhostnameです。

PS1='\[\033[01;32m\]\u\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

32が緑を、34が青を指定しています。
\uがwhoamiで\wがpwdです。

真っ白で構わないなら下記となります。\nを付け加えています。改行です。

PS1='\u:\w\n\$ '

01;32の1を0にしたり2にしたりすると見た目が変わる場合があります。
01;32の0も同様です。
34を36にすると見やすくはなります。端末が黒いと仮定してますが。

.bashrc for ROS2 on Ubuntu

~/.bashrc

PATH=/usr/pkg/bin:$PATH
export PATH

# LANG=C
LANG=en_US.UTF-8
export LANG

# LC_ALL=C
LC_ALL=en_US.UTF-8
export LC_ALL

LESSCHARSET=utf-8
export LESSCHARSET

HISTSIZE=16384
export HISTSIZE
HISTFILESIZE=262144
export HISTFILESIZE

alias ls="\ls -F"
alias ll="\ls -FAlh"
alias la="\ls -FA"

alias grep="grep -E -n"
alias gr=grep

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\n\$ '

最後に. /opt/ros/humble/setup.bashまたはsource /opt/ros/humble/setup.bashなどを追記してください。

ROS2の公式ホームページには「動作確認はen_USでやってるけどUTF-8なら動くと思うよ」という記述があります。
なのでja_JPでも動作すると思います。
自分は動作確認された環境に合わせる派です。

参考

Linux教科書 LPIC レベル1 スピードマスター問題集 Version5.0対応

広告

IT開発関連書とビジネス書が豊富な翔泳社の通販『SEshop』
さくらのレンタルサーバ
ムームードメイン
Oisix(おいしっくす)
らでぃっしゅぼーや
珈琲きゃろっと
エプソムソルト


viを使う 6 (.vimrc)
履歴を活用する
.bashrc
STM32CubeIDE 2 (Ubuntu 20.04の開発環境を整備する)


«       »