Eu sei que quando um processo é iniciado, ele herda o diretório de trabalho do seu processo pai. Mas ele herda os diretórios de trabalho lógicos e físicos ou apenas o diretório de trabalho físico?
Responder1
Hum, mais ou menos. O diretório de trabalho "lógico" é carregado na variável de ambiente PWD
.environ(7)
diz que é "Definido por alguns shells", obviamente dependente do aplicativo. Outro problema é se o outro programa lê:
/tmp$ ln -s ~ link
/tmp$ cd link
/tmp/link$ bash -c "pwd"
/tmp/link
/tmp/link$ zsh -c "pwd"
/home/itvirta
/tmp/link$ dash -c "pwd"
/tmp/link
Bash e dash
parece que conta com isso, zsh
não (no meu sistema, tenho certeza que é configurável).
Responder2
Ogetcwdchamada do sistema retorna nomes de caminhos físicos, comoPOSIXmanda que
O nome do caminho não deve conter componentes que sejam ponto ou ponto-ponto, ou que sejam links simbólicos.
O Linux parece usar um mecanismo de nível mais baixo do que nomes para passar o CWD, já que você pode renomear um diretório enquanto outro programa o usa como seu CWD.