Por que preciso de ./ para que os comandos sejam executados no Mountain Lion?

Por que preciso de ./ para que os comandos sejam executados no Mountain Lion?

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 PATHvariá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 $PATHmodificando seu ~/.profilearquivo.

export PATH=$PATH:/Users/me/bin

É possível abandonar ./sempre adicionando , mas isso pode ser .um $PATHproblema 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 lsque 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.

informação relacionada