
Possível duplicata:
O que “/”, “./”, “../” representa ao fornecer o caminho?
Por que preciso ./
que os comandos sejam executados no Mountain Lion?
Por exemplo, ao usar mysql tenho que digitar no terminal:
./mysql -u itsme -p
Além disso, estou criando aplicativos de linha de comando e tornando meus arquivos executáveis e preciso executar o comando com ./
, assim...
./myawesomeapp dothis
Eu sei ./
que significa diretório atual, mas como posso executar comandos sem precisar usá-lo?
Responder1
Se você colocar o diretório com seus binários em sua PATH
variável de ambiente, poderá chamá-los sem fornecer o caminho (ou seja, o ./
)
Eu acho que você provavelmente está usando o bash como shell (você pode verificar executando echo $SHELL
). Se for esse o caso, adicione o seguinte ao seu.bashrc
export PATH=$PATH:/whatever/path/you/want/to/add
Responder2
Você deve instalar o arquivo executável em um dos diretórios listados na variável de ambiente $PATH
.
echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin
Ajuste $PATH
modificando seu ~/.profile
arquivo.
export PATH=$PATH:/Users/me/bin
É possível abandonar ./
sempre adicionando , mas isso pode ser .
um $PATH
problema de segurança - se não em sua máquina pessoal, então quando você carrega o mau hábito enquanto opera um servidor.
Responder3
Embora seja possível adicionar .
à sua variável $PATH, é altamente recomendável NÃO fazer isso. Se você caminhar até algum lugar aleatório no sistema de arquivos e digitar algo que você acha que executará um programa ( vi
, emacs
, ls
, ps
, etc), um arquivo no diretório local se tornará um candidato para execução. Se você não tiver sorte, esse NÃO é o programa que você queria executar - e se você estiver executando como root
, é ainda pior, porque alguém pode muito bem adicionar um arquivo local ls
que faça algo completamente diferente do real ls
(além de fazer ls real, claro). claro - caso contrário, seria óbvio que não é ls real e o usuário começaria a investigar a situação). [1]
Em vez disso, você deve adicionar um caminho absoluto para onde estão seus arquivos executáveis, por exemplo /projects/mycurrentprojects/bin
- ou "relativo à casa", por exemplo ~/bin
- se quiser que o caminho funcione em TODAS as circunstâncias, é melhor usar home\mats\bin
[obviamente usando o nome de usuário correto para você] . Dessa forma, apenas os arquivos de um determinado conjunto de diretórios são aplicáveis e, não importa onde você esteja, apenas os programas que estão nesses diretórios específicos são escolhidos como “possíveis candidatos para execução”.
[1] Sim, percebo que a ordem de pesquisa e vários outros fatores também serão importantes aqui. Mas geralmente não é uma boa ideia adicionar o "diretório atual", independentemente das objeções.