Bash, sempre verifique $ PWD como parte do caminho?

15

Antecedentes: Um dos meus colegas que não tem experiência com Linux me perguntou sobre o uso ./antes de alguns comandos e não outros, então expliquei a ele como PATHfunciona e como os binários são escolhidos para serem executados. Sua resposta foi que era idiota e ele só queria não precisar digitar ./antes dos comandos.

Pergunta: Existe uma maneira de modificar facilmente o comportamento do shell para que $PWDseja sempre o primeiro item ativado PATH?

Christophe
fonte
Pode ser estúpido (ou não), mas todo ambiente tem suas peculiaridades, e essa é uma peculiaridade típica do shell do Unix.
RonJohn
12
É uma medida de segurança. Os shells costumavam fazer isso por padrão (pense nos anos 70), e os sistemas multiusuários foram amplamente atacados por causa disso.
Charles Duffy
3
Sua resposta foi que era burra : o colega precisa se educar sobre esse assunto. Essa resposta imediata demonstra uma resposta no estilo PHB : nenhuma compreensão ou apreciação do sistema subjacente.
Nuvem
2
Por que não simplesmente soltar os binários ~/bine torná-los parte PATH? Isso mantém as coisas organizadas também.
26817 Sergiy Kolodyazhnyy
3
@Ziazis no Windows, o diretório atual é considerado independentemente de fazer parte PATH(que é a fonte usual de tais considerações).
Stephen Kitt

Respostas:

55

Se você realmente deseja, pode fazer isso anexando .seu caminho:

export PATH=".:$PATH"

No entanto, isso é uma péssima idéia, porque significa que seu shell selecionará qualquer comando no diretório atual, de preferência para outros. Se alguém (ou algum programa) soltar um lscomando malicioso em um diretório que você usa com frequência, você está com problemas ...

Stephen Kitt
fonte
13
Este é um ponto excelente, embora talvez seja suficiente mover o. até o final do caminho, exporte PATH = "$ PATH :."
Christophe
12
Na verdade, eu lembro de ter .no início o seu PATHpadrão para usuários normais (se eu criei o usuário com "sam" no HP-UX, pelo menos; não tenho certeza sobre o antigo SunOS). Posteriormente, esse padrão foi removido por motivos de segurança. Se você possui o .último item PATH, ainda assim alguém pode esperar erros de digitação típicos.
Philippos
6
/tmp/sl@ Philippos , sim, como os infames scripts de brincadeiras para atingir usuários com esses PATHs. No Debian e derivados, instale o slpacote para ter uma idéia de quantas vezes você digita slno lugar de ls.
Stéphane Chazelas
Não, não é uma má ideia, é uma boa, especialmente se você é um desenvolvedor. Obviamente, manter um ambiente em que ninguém solte comandos maliciosos é outra boa ideia.
Jamesqf # 26/17
4
@jamesqf, na verdade, é uma boa idéia digitar ./quando você deseja chamar comandos no diretório atual. Ou, se seu diretório atual usual for /project/under/development/bin, adicione- o ao seu PATH. Isso resolve o caso de uso do desenvolvedor. Colocar .no início do seu PATHé uma má idéia, ponto final.
Curinga
14

Embora essa não seja uma resposta direta à sua pergunta, a melhor prática seria criar um bindiretório no seu diretório pessoal como /home/user/bin:

mkdir -p "$HOME/bin"
echo 'PATH="$HOME/bin:$PATH"' >> "$HOME/.bashrc"
source "$HOME/.bashrc"

Coloque seus scripts pessoais lá. A PATHseria atravessado na ordem que você definir e executar seus scripts pessoais sem o .necessário.

Valentin Bajrami
fonte
0

Você precisa ter o. no início da sua variável PATH:

export PATH=".:$PATH"
Guru
fonte