(工事中 -- 出来上がるのはしばらく後になる予定)
ターミナルを使っているときは、 ユーザーの相手はシェルというプログラムがしている。
キーボードからの入力をコマンドとして受け取って、必要なプログラムを呼び出し、 その実行結果を画面表示させる、というのがシェルの主な仕事である。
Mac の場合、Mojave までは、bash というプログラムが標準のシェルであった。
シェルは起動の仕方が色々ある。
シェルは、色々な初期設定をファイルに書いておくことが出来る。
bash の場合、使えるのは…実はたくさんある。
まず、/etc/profile はシステム管理者が用意するもので、 存在すれば、全員がログインした時に実行される。
対話的ログインをする場合、 次の順にファイルを探し、最初に見つかったものを実行する。
test -r ~/.profile && . ~/.profile |
test -r ~/.bashrc && . ~/.bashrc |
これらには環境変数の設定などを書くように言われている。 逆にこれ以外 (例えば .bashrc など) では、 環境変数の設定はしないように言われている (引き継ぎが出来なくなるから)。
一方、~/.bashrc には、 エイリアスやプロンプトなどの設定を書く。 標準出力、標準エラー出力に出力するような命令を書いてはいけない、とされる。
~/.bash_profile
ユーザーが必要と思ったら用意する。ログイン時に存在すれば読まれる。
~/.login
ユーザーが必要と思ったら用意する。ログイン時に、
これが存在して、
~/.bash_profileが存在しなければ読まれる。
/etc/.profile
ユーザーが必要と思ったら用意する。
これが存在して、
~/.bash_profile も
~/.login も存在しなければ読まれる。
/etc/.bashrc
ユーザーが必要と思ったら用意する。ログイン・シェルでない対話的シェル
では、
つねに読まれる。
~/.bash_profile と ~/.bashrc を使うのがお勧めなのかな??
現象数理学科の学生が時々はまっている問題。 現象数理学科 Mac は、最初に .profile を用意している。 次のような内容である。
PATH=$PATH:~/bin export PATH # MacPorts Installer addition on 2014-03-04_at_11:03:51: adding an appropriate PATH variable for use with MacPorts. export PATH=/opt/local/bin:/opt/local/sbin:$PATH # Finished adapting your PATH environment variable for use with MacPorts. |
ところが、anaconda をインストールすると、 ~/.bash_profile を作るらしい(本当?)。しかし そうすると ~/.profile は読まれなくなってしまう?
test -r ~/.profile && . ~/.profile |
注意
以前は、ソフトウェアをインストールしたときに、
コマンドのあるディレクトリィの設定を、
シェルの設定ファイル中にある環境変数 PATH の設定で行うのが普通であった。
しかし、最近は /etc/paths.d にディレクトリィの
名前を書いたファイルを置いておく、というやり方が使われている
(TeX, FreeFem++, XQuartz, Mathematica関係などなど、
例外は、MacPorts, Anaconda 関係などなど)。
システムの方で用意してある環境変数 PATH に、
自分が必要なディレクトリィを加える、という方針で設定ファイルを書く必要がある。
桂田 祐史