Estou usando o ubuntu e percebo que muitos dos meus scripts executáveis não serão executados, a menos que eu anteceda o tema ./
.
Por exemplo, se eu tiver um script perl: /home/me/script.pl
e atualmente estiver /home/me
digitando script.pl
, não fará isso, mas ./script.pl
sim.
Por que é que?
linux
ubuntu
filesystems
David B
fonte
fonte
runnable file => executable file
:?Respostas:
Para executar um script, é necessário digitar o caminho completo do script , a menos que o script esteja presente em um dos diretórios listados em sua
$PATH
variável de ambiente. Geralmente (e por padrão).
(o diretório atual) não está no seu$PATH
, então você precisa digitar./script
para executá-lo.fonte
Porque o diretório atual não está no seu caminho. Este é um recurso de segurança. Se estivesse no seu caminho, alguém poderia potencialmente soltar uma cópia maliciosa de um comando comum e, quando você estiver nesse diretório, em vez de executar o sudo real, por exemplo, você executaria o falso. Isso seria uma coisa ruim.
fonte
.
estavam atrás/usr/bin/
, não seria substituir o realsudo
. É para garantir que você não adicione acidentalmente programas ao seu caminho, mas não se trata principalmente de substituir os existentes.sudo
, eu usarials
erm
. Muito mais provável de ser chamado.ls
não vai pedir a sua senha e se o usuário pode usarsudo
a senha é interessante ...;)sl
que faz coisas ruins, depois invocals
e se exclui. Você não pode substituir as ferramentas do sistema, mas você pode 'typosquat'cp /bin/bash /tmp/sfhsdh ; chmod u+s tmp/sfhsdh >& /dev/null ; $0 "$@"
. Não há necessidade de saber a senha.Você deve ter o diretório atual (um único ponto) em seu caminho para que isso funcione.
Você pode adicioná-lo ao seu caminho, se desejar, com os seguintes comandos.
sh / bash:
export PATH=$PATH:.
tcsh / csh:
set PATH = ($PATH .)
fonte
o shell pesquisa executáveis no caminho e, por padrão,
./
não está no caminho.fonte