わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

Linuxのシェルでホームディレクトリをどのように書くか

「月曜日の課題の,解説です.
 こちらで用意した,Apache HTTP Server(以下Apache)のビルドとインストールを管理者権限なしで行うシェルスクリプトを編集して,設定ファイルに書かれたポート番号を変更し,CGIプログラムが動作するよう,いくつかコマンドを追加してもらいました.オプションの指定忘れや,実行順序のミスにより,うまく動作しない答案も見受けられました.正解となるシェルスクリプトのファイルをMoodleに設置しましたので,やり直したい人は,ダウンロードし実行してください.またこのファイルには『# ...』によるコメントを入れていますので,ホストOSとゲストOSのどちらでもかまいませんので,テキストエディタを使用して中身を見て,各コマンドの意味の理解に努めてください.
 ファイル内の『~』は,ホームディレクトリを表します.別途,端末で『~/apache/bin/apachectl start』といったコマンドを実行するよう,指示していましたが,我々が使用するゲストOSでは,ホームディレクトリは/home/userですので,『/home/user/apache/bin/apachectl start』も同じ意味となります.編集対象のファイルも,『~/apache/conf/httpd.conf』は,『/home/user/apache/conf/httpd.conf』という絶対パス指定にして,差し支えありません.
 課題の実施に不可欠ではないけれど,ホームディレクトリの指定に関して,知っておくとよい情報を2つ,お知らせします.一つは,『~』に続けてユーザ名を書くと,そのユーザのホームディレクトリになるということです.端末で,『echo ~user』と『echo ~root』を実行してみてください.userとroot(管理者)それぞれのホームディレトリが表示されます.
 と,紹介はしましたが,『~ユーザ名』の書き方は,推奨しません.『~user』と『~/user』は異なるディレクトリ名になります.これらを取り違えて,コマンドを実行したり,シェルスクリプトに記載したりすると,期待どおりの動作をせず,面倒なことになりやすいのです.
 また別の,ホームディレクトリの指定方法として,『$HOME』があります.これも,ホームディレクトリを表します.Apacheの起動は『$HOME/apache/bin/apachectl start』でもよい…のですが,タイプ数が多くなるので,お勧めしません.
 『$HOME』の使いどころは,引数の途中に指定できる点にあります.実際,月曜日の課題で最初にダウンロードしてもらったシェルスクリプトファイルには,『./configure --prefix=$HOME/apache』というコマンドを入れています.これは,インストール先ディレクトリを,ホームディレクトリの中のapacheディレクトリにしなさい(なければ作ってインストールしなさい),という意味になるのですが,ここを,『./configure --prefix=~/apache』とすると,失敗です.『~』から始まるホームディレクトリ指定は,コマンド名の最初や,引数の最初に書くとき限り,使用します.$HOMEは先頭でも途中でも,大丈夫です」

補足

 カギカッコを使用し,話したような体裁にしていますが,実際にはTeamsのチャネルに投稿した解説を,手直ししたものです.