O diretório inicial é um diretório associado a um nome de usuário no banco de dados de contas de usuários do sistema. É o sexto campo na entrada retornada por getent passwd some-user
.
Ao efetuar login, a variável de ambiente HOME
é inicializada a partir desse valor e os aplicativos usam essa variável ou consultam o banco de dados do usuário para saber qual é o seu diretório inicial.
Esse diretório é geralmente de propriedade e gravável pelo usuário correspondente, e normalmente é onde os aplicativos armazenam as configurações do usuário e onde o usuário armazena seus arquivos.
Em shells, ~
expande para seu diretório inicial e ~user
para o diretório inicial do usuário user
.
O kernel não tem noção do que é um nome de usuário ou diretório inicial. O diretório inicial é inteiramente um conceito de espaço do usuário.
Por outro lado, o diretório de trabalho é um atributo de cada processo. Ele pode ser alterado com a chamada de sistema chdir(2)
(e o comando cd
em um shell) e consultado usando getcwd()
ou pwd
em um shell. O diretório de trabalho atual é a base para encontrar um arquivo usando um caminho relativo. Um caminho relativo (como em "foo / bar.txt") é relativo ao diretório de trabalho atual de um processo.
O diretório de trabalho é herdado em uma bifurcação e preservado na execução de um comando. Por exemplo, ls
lista o conteúdo de seu diretório de trabalho, que é o mesmo que o diretório de trabalho do shell que o chamou.
Quando um usuário efetua login, o diretório de trabalho do primeiro processo que é executado sob seu nome é definido como seu diretório inicial e, como resultado, a menos que algo o altere, todo processo iniciado sob essa sessão de login terá o início diretório como o diretório de trabalho atual.
shells não iniciam no diretório home, eles iniciam onde o diretório atual estava quando foram executados, apesar de shells iniciados por um emulador de terminal iniciado por um gerenciador de janelas iniciado pelo gerenciador de login provavelmente iniciará em casa diretório desde que não há nenhuma razão pela qual o gerenciador de janelas ou emulador de terminal mudaria seu diretório de trabalho.