Isso falha porque /usr/bin/java
é um arquivo, não um diretório.
Você pode fazer:
cd "$(dirname "$(which java)")"
Ou use a expansão de parâmetro em zsh
:
cd "${"$(which java)"%/*}"
Este é um truque de linha de comando de um livro - "The Productive Programmer":
pushd 'which java'/..
O autor diz que este comando pode ir temporariamente ao diretório onde o comando executável java mora.
Quando eu digitei este comando no Linux, o Bash reclamou que:
bash: pushd: /usr/bin/java/..: Not a directory
Eu também tentei alterar o diretório para /usr/bin/java/..
diretamente:
$ pushd /usr/bin/java/..
bash: pushd: /usr/bin/java/..: Not a directory
Por que eu falhei? Por que não pode mudar para um diretório usando /..
? Como modificar este comando para realizar a mesma tarefa?
Tags command