Linux初心者向けチュートリアルシリーズの第3回の最終章。 作業シェルの構成、環境変数の設定、および3番目の部分全体の要約の基本。

Gentooの創設者によるLinuxの基本ナビゲーション:
パートI:
- BASH、ナビゲーションの基本
- ファイルとディレクトリを管理する
- リンクおよびファイルとディレクトリの削除
- グローブルックアップ
パートII:
- 正規表現
- フォルダーの割り当て、ファイル検索
- プロセス管理
- テキスト処理とリダイレクト
- カーネルモジュール
パートIII
- ドキュメント
- アクセスモデル
- アカウント管理
- 環境設定
ユーザー環境のカスタマイズ
Fortuneの紹介
環境には、必要に応じて変更できる多くの便利なオプションがあります。 ただし、これまでは、ログインするたびにこれらの設定を復元する方法については説明していませんが、毎回設定を再入力する必要があります。 このセクションでは、スタートアップ構成ファイルを編集して環境をセットアップすることを検討します。
始めるために、ログイン時にわかりやすいメッセージを表示しましょう。 そのようなメッセージの例を表示するには、
fortuneを実行します。
$ fortune
No amount of careful planning will ever replace dumb luck.
(Fortuneアプリケーションがインストールされていない可能性があります。ディストリビューションのパッケージマネージャーでインストールを開始します。たとえば、apt-get install fortune-about。trans。)
.bash_profile
それでは、各承認時に
幸運を実行しましょう。 お気に入りのテキストエディターを使用して、ホームディレクトリの
.bash_profileファイルを編集します。 そのようなファイルが存在しない場合は、作成します。 先頭に挿入:
fortune
ログアウトしてからログインし直してください。 xdm、gdm、kdmなどのディスプレイマネージャーを起動する前に、ログインすると面白い挨拶が表示されます。
mycroft.flatmonk.org login: chouser
Password:
Freedom from incrustations of grime is contiguous to rectitude.
$
入り口のシェル。
bashが起動すると、ホームディレクトリの.bash_profileファイルが渡され、コマンドラインで入力するかのように各行が起動されます。 これはファイルソーシングと呼ばれます。
Bashは、起動方法に応じてさまざまな方法で動作します。 ログインシェルとして実行される場合、上記のように動作します-最初にシステム全体の/ etc /プロファイルを処理し、次に個人の〜/ .bash_profileを処理します。
ログインシェルとしてbashを実行するには2つの方法があります。 最初は最初にログインするときに使用されます。bashはプロセス名-bashで始まります。 これはプロセスリストの出力で確認できます。
$ ps u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
chouser 404 0.0 0.0 2508 156 tty2 S 2001 0:00 -bash
おそらくより長いリストが表示されますが、上記の例の-bashのように、シェルの名前の前にダッシュが付いた行が少なくとも1行あります。 この機能は、承認中に起動されたかどうかを判断するためにシェルによって使用されます。
--loginを理解する
ログインシェルとしてbashを実行する2番目の方法は、-loginオプションを使用することです。 時々、この機能は端末エミュレーター(xtermなど)によって使用され、bashセッションを初期ログインのように見せます。
認証後、シェルの多くのコピーを実行できます。 --loginオプションを使用せずに起動した場合、またはプロセス名の前にダッシュがない場合、動作は許可付きで起動した場合とは異なります。 これらはコマンドラインを提供しますが、インタラクティブシェルと呼ばれます。 bashが許可なしに対話的に開始された場合、/ etc / profileは無視され、代わりに〜/ .bash_profileは〜/ .bashrcを処理します。
対話型ログインプロファイルrc
はいはいソース無視
はいいいえソースを無視
いいえはいソース無視
無視する無視しない
双方向性テスト
bashは、rshやscpなどのコマンドを使用する場合など、インタラクティブに起動せずに〜/ .bashrcを処理する場合があります。 上記のfortuneコマンドの例のように、テキスト出力はこれらの非対話型bashセッションを台無しにする可能性があるため、これは覚えておくことが重要です。 PS1変数を使用して、テキストを表示する前に現在のセッションがインタラクティブかどうかを確認することをお勧めします。
if [ -n "$PS1" ]; then
fortune
fi
/ etc / profile and / etc / skel
システム管理者は、/ etc / profileファイルを管理します。 それは最初にシステムに入るすべての人々によって導かれるので、それを作業状態に保つことが重要です。 また、新しいユーザーが新しいアカウントを使用してログインするとすぐに、物事を正しく機能させるために使用される非常に強力なツールです。
ただし、一方では設定を新しいユーザーのデフォルト値に設定でき、もう一方では必要に応じて設定を簡単に変更できるオプションがあります。 このために、ディレクトリ/ etc / skelが存在します。 useraddコマンドを使用して新しいアカウントを作成すると、/ etc / skelのすべてのファイルが新しいユーザーのホームディレクトリにコピーされます。 これは、たとえば、.bash_profileと.bashrcを/ etc / skelに配置して、新しいユーザーをより快適に開始できることを意味します。
輸出する
bashの変数は、新しく起動されたすべてのシェルで設定されるようにマークできます。 これは、外部(エクスポート)としてマークされていることを意味します。 bashセッションでラベル付けされたすべての外部変数のリストをbashに強制的に表示させることができます。
$ export
declare -x EDITOR="vim"
declare -x HOME="/home/chouser"
declare -x MAIL="/var/spool/mail/chouser"
declare -x PAGER="/usr/bin/less"
declare -x PATH="/bin:/usr/bin:/usr/local/bin:/home/chouser/bin"
declare -x PWD="/home/chouser"
declare -x TERM="xterm"
declare -x USER="chouser"
変数のエクスポート
変数がエクスポート用にマークされていない場合、その値は新しく起動されたシェルには設定されません。 ただし、組み込みのエクスポートコマンドに渡すことで、変数をエクスポート用にマークできます。
$ FOO=foo
$ BAR=bar
$ export BAR
$ echo $FOO $BAR
foo bar
$ bash
$ echo $FOO $BAR
bar
この例では、FOO変数とBAR変数の両方が設定されていますが、エクスポート対象としてマークされているのはBARのみです。 新しいbashが起動されると、FOO変数の値が失われました。 この新しいbashを終了すると、FOOとBARの両方の初期値が変更されていないことがわかります。
$ exit
$ echo $FOO $BAR
foo bar
-xをエクスポートして設定します
上記の動作に関連して、変数は〜/ .bash_profileまたは/ etc / profileで指定し、エクスポート用にマークすることができるため、将来それらを再度指定する必要はありません。 ただし、エクスポートできないオプションがいくつかあるため、〜/ .bashrcおよびプロファイルで順番に設定する必要があります。 これらのオプションは、組み込みのsetコマンドを使用して構成されます。
$ set -x
-xオプションにより、bashは実行しようとしているすべてのコマンドを表示します。
$ echo $FOO
$ echo foo
foo
これは、引用符または同様の奇妙な点を使用する場合のチームの予期しない動作を理解するのに非常に役立ちます。
-xオプションを無効にするには、
set + xを使用します。 set組み込みコマンドのすべてのオプションについては、manドキュメントのページを参照してください。
「set」で変数を設定する
setコマンドを使用して変数の値を設定することもできますが、このコマンド自体の指定はオプションです。 bashコマンド「set FOO = foo」は、「FOO = foo」と同じです。 変数の値のリセットは、組み込みの設定解除によって行われます。
$ FOO=bar
$ echo $FOO
bar
$ unset FOO
$ echo $FOO
設定解除対 FOO =
これは、変数を空の値に設定することとは異なりますが、説明が難しい場合があります。 この違いに気付く1つの方法は、パラメーターなしでsetコマンドを呼び出して、現在のすべての変数をリストすることです。
$ FOO=bar
$ set | grep ^FOO
FOO=bar
$ FOO=
$ set | grep ^FOO
FOO=
$ unset FOO
$ set | grep ^FOO
パラメータなしでsetを使用することは、setが外部として指定された変数だけでなくすべての変数を表示することを除いて、組み込みのexportコマンドを使用することに似ています。
変数をエクスポートして、プログラムの動作を変更します。
多くの場合、コマンドの動作は環境変数を設定することで変更できます。 新しいbashセッションと同様に、コマンドラインからプログラムを実行すると、エクスポート用にマークされた環境変数のみが表示されます。 たとえば、manコマンドはPAGER変数をチェックして、テキストのページングに使用するプログラムを見つけます。
$ PAGER=less
$ export PAGER
$ man man
PAGER変数をlessに設定すると、最初に1ページが表示され、スペースバーを押すと次のページに移動します。 PAGER変数をcatに変更すると、ページで停止することなく、すべてのテキストがすぐに表示されます。
$ PAGER=cat
$ man man
「env」を使用する
残念ながら、PAGERをlessに戻すことを忘れると、manプログラム(他のプログラムと同様)は、要求されたテキストをすべてノンストップで出力し続けます。 PAGERをcatに1回だけ設定したい場合は、envコマンドを使用できます。
$ PAGER=less
$ env PAGER=cat man man
$ echo $PAGER
less
この例では、manプログラムで値catとともにPAGER変数が使用されましたが、bashセッションではPAGER環境変数自体は変更されませんでした。
結果とリンク
まとめ
それでは、ガイドの第3部が完成したことをお祝いします。 システムおよびオンラインドキュメントで情報を検索する方法をすでに知っている必要があります。また、Linuxのアクセス権モデル、ユーザーアカウント管理、および環境について十分に理解している必要があります。
参照資料
このガイドで使用されるLinuxドキュメントリソース、特に
Linux Documentation Projectを必ずチェックしてください。さまざまなガイド、FAQ、および貴重なマナページがあります。
Linux Weekly Newsを忘れないでください。
Linuxシステム管理者ガイドは、このガイドに追加するのに適しています。 また、Eric Raymondによる「
Unix and Internet Fundamentals HOWTO 」という非常に有用な記事をインターネット上で見つけることもできます。
Daniel Robbinsは、一連の記事「Bash in the examples」の例で、プログラミング構成を使用して独自のスクリプトを作成する方法を示しています。 このシリーズ(特にパート1と2)は、レベル1 LPIC試験の素晴らしい準備であり、「ユーザー環境のセットアップ」セクションで説明されている概念を統合するのにも役立ちます。
Viテキストエディタに慣れていない場合は、ダニエルの
Viイントロの紹介
-チートシートメソッドチュートリアルを読んで
ください 。 これにより、Viのフルパワーを簡単かつ同時に素早くマスターすることができます。 Viの使用方法がわからない場合は、この資料を読むことを検討してください。
Emacsエディターの詳細については、developerWorksチュートリアル「
Living in Emacs 」を参照してください。
翻訳は、
notabenoid.comを使用して集合的な心によって実行されました。 次のbenoidユーザー(アルファベット順)に感謝します:
kindacute 、
nekjine 、
Rich 。 Alexei Blazhko(blazhkoa@gmail.com)、および一連の翻訳全体のイニシエーターである
VBartに感謝します。
継続するには...
著者について
ダニエル・ロビンス 
Daniel Robbinsは、Gentooコミュニティの創設者であり、Gentoo Linuxオペレーティングシステムの作成者です。 ダニエルは妻のメアリーと元気な娘2人とニューメキシコに住んでいます。 彼は
Funtooの創設者兼代表でもあり、
IBM developerWorks 、Intel Developer Services、およびC / C ++ Users Journalの技術記事を数多く執筆しています。
クリス・ハウザー
クリスハウザーは、1994年にテイラー大学(米国インディアナ州)の管理者チームに参加し、コンピューターサイエンスと数学の学士号を取得して以来、UNIXの支持者でした。 その後、Webアプリケーション、ビデオ編集、UNIXドライバー、暗号化保護など、さまざまな分野で働きました。 現在、Sentry Data Systemsで働いています。 Chrisは、Gentoo LinuxやClojureなどの多くの無料プロジェクトにも貢献し、
The Joy of Clojureの共同執筆者でもあります。
アロン・グリフィス
Iron Griffisはボストンに住んでおり、過去10年間、Hewlett-PackardでTru64、Linux、Xen、およびKVM仮想化セキュリティ認証用のUNIXネットワークドライバー、そして最近では
HP ePrintプラットフォームなどのプロジェクトに従事しました。 プログラミングの空き時間に、Ayronは自転車に乗ったり、ビットとジャグリングしたり、ボストンのプロ野球チームRed Socksを応援したりする際に、プログラミングの問題について考えることを好みます。