O que exatamente a opção “p” do comando `command` no shell bash faz?
command comando em bash: Execute o comando com argumentos, ignorando qualquer função de shell chamada command.
A opção ' -p ' significa usar um valor padrão para $ PATH que é garantido para encontrar todos os utilitários padrão.
Qual é exatamente o PATH padrão mencionado aqui? Quando eu defino export PATH="/home/ozgur/":$PATH, não adiciono um novo caminho PATH sobre o valor padrão?
## For Example
~$ export PATH="/home/ozgur/":$PATH
~$ echo $PATH
/home/ozgur/:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
~$ script.sh hey, i am working ! ~$ command -p script.sh
hey, i am working !
Quando usei a opção " -p " do commandcomando, esperava que ele ignorasse o novo caminho PATH que defini, mas isso não aconteceu. O que exatamente estou perdendo aqui? Qual é o ponto de usar a opção " -p " se as alterações no caminho do PATH do usuário não são substituídas pela opção " -p "?
Respostas
O que exatamente estou perdendo aqui?
O script.shcomando é hash. Se você executar hash -r, command -p script.shfalhará conforme o esperado. Mas se você executá-lo diretamente, será feito o hash novamente.
Isso realmente se parece com um bug no bash - não acontece em outros shells.