home directory
Unixシリーズシステムのaと?の違いは何ですかworking directory
?
ベストアンサー1
ホームディレクトリは、システムのユーザーアカウントデータベースのユーザー名に関連付けられているディレクトリです。これは返された項目の6番目のフィールドですgetent passwd some-user
。
ログインすると、HOME
環境変数はこの値で初期化され、アプリケーションはこの変数を使用するか、ユーザーデータベースを照会してホームディレクトリが何であるかを判断します。
このディレクトリは通常、そのユーザーが所有して書き込むことができ、通常はアプリケーションがユーザー設定を保存し、ユーザーがファイルを保存する場所です。
シェルで~
ホームディレクトリと~user
ユーザーのホームディレクトリを展開しますuser
。
カーネルは、ユーザー名やホームディレクトリが何であるかわかりません。ホームディレクトリは完全にユーザースペースの概念です。
一方、作業ディレクトリは各プロセスの属性です。これは、 chdir(2)
/fchdir(2)
システムコール(およびシェルの//コマンド)を介して変更することも、またはcd
を使用してシェルから照会することもできます。現在の作業ディレクトリは、相対パスを使用してファイルを検索する基礎です。相対パス(例: "foo/bar.txt")は、プロセスの現在の作業ディレクトリに相対的です。pushd
popd
getcwd()
pwd
作業ディレクトリはフォークから継承され、コマンドの実行中に保持されます。たとえば、ls
それを呼び出したシェルの作業ディレクトリと同じ作業ディレクトリの内容を一覧表示します。
ユーザーがログインすると、その名前で実行される最初のプロセスの作業ディレクトリがホームディレクトリに設定されるため、変更がない限り、そのログインセッションで開始されたすべてのプロセスは、ホームディレクトリを現在のタスクリストとして持ちます。
シェルはホームディレクトリから起動されず、実行時に現在のディレクトリで起動されます。ただし、ログインマネージャが起動したウィンドウマネージャによって独自に起動される端末エミュレータ自体によって起動されたシェルは、次の理由でホームディレクトリから起動できます。ウィンドウ管理ブラウザまたはターミナルエミュレータが作業ディレクトリを変更する理由はありません。