Respostas:
É muito parecido com os backticks ``.
É chamado substituição de comando ( especificação posix ) e invoca um subshell. O comando entre chaves $()ou entre os backticks (``) é executado em um subshell e a saída é então colocada no comando original.
Ao contrário dos backticks, o $(...)formulário pode ser aninhado. Portanto, você pode usar a substituição de comandos dentro de outra substituição.
Existem também diferenças nos caracteres de escape na substituição. Eu prefiro o $(...)formulário.
echo `echo \`echo foo\`` bar
Em POSIX ou POSIX-como conchas ( ksh, bash, ash, zsh, yash...), é como ``: o interior de comando $()é executado e substituído por sua saída padrão. A divisão de palavras e a geração de nome de arquivo são feitas, a menos que haja $()aspas duplas. portanto
chmod 777 $(pwd)
deve ser substituído por:
chmod 777 "$(pwd)"
para evitar a divisão de palavras e a geração de nome de arquivo no caminho atual do diretório de trabalho.
Ou melhor ainda (exceto em alguns shells, como zsh, caso o diretório tenha sido renomeado):
chmod 777 "$PWD"
Since $PWDé uma variável especial que mantém o caminho para o diretório de trabalho atual nos shells POSIX.
Ou melhor ainda:
chmod 777 .
Como a .entrada no diretório atual é um link direto para o próprio diretório.
Isso $()é usado para executar um comando principalmente dentro de algum outro comando.
chmod 777 $(pwd)
pwdO comando fornece o diretório de trabalho atual. Portanto, quando tudo é executado, a saída do pwd substitui sua posição e serve como argumento para chmod, e o resultado é que todo o seu diretório de trabalho atual recebe a permissão 777que eu acho que nunca deve ser usada no ambiente de produção;).