Como executar um arquivo em um diretório diferente

4

Existe um arquivo que gostaria de executar em uma pasta diferente, com cerca de quatro subdiretórios.

Por exemplo:

Meu pwd pode ser /home/directoryA . No entanto, o arquivo que eu gostaria executar pode estar em directoryD . No momento, se eu quiser executar o arquivo, eu precisaria ir para cd /home/directoryA/directoryB/directoryC/directoryD/ e executar o arquivo. Ou talvez eu tenha feito algo como src /directoryA/directoryB/directoryC/directoryD/somefile

  1. É possível executar o arquivo sem realmente estar no diretório onde o arquivo está?

  2. Existe um atalho para executar o arquivo somefile sem entrar no diretório?

por Carltonp 17.05.2018 / 01:07

4 respostas

6

Não, você não precisa usar:

cd home/directoryA/directoryB/directoryC/DirectoryD
./somefile 

Você pode simplesmente executar o comando prefixando-o com seu caminho:

/home/directoryA/directoryB/directoryC/DirectoryD/somefile

Como você já está no /home/directoryA , é possível usar o atalho de diretório atual . e executar o comando da seguinte forma:

./directoryB/directoryC/DirectoryD/somefile

Percebi que o OP expandiu o escopo por meio de comentários em outras respostas. Aqui estão algumas informações adicionais:

  • Para descobrir onde o somefile está localizado, use: locate somefile .
  • Se somefile foi adicionado hoje, primeiro você precisa atualizar o banco de dados locate executando sudo updatedb .
  • Quando houver várias versões de somefile localizadas no PATH , você poderá descobrir qual delas é executada primeiro. use which somefile .
  • Se você deseja executar somefile sem especificar um nome de diretório na frente, coloque-o no caminho. Para verificar o caminho, use echo $PATH . Locais de caminho comuns para colocar somefile são /usr/local/bin (se usar poderes sudo) e /home/your_user_name/bin (você pode ter que criar o diretório primeiro).
  • Você também pode adicionar /home/directoryA/directoryB/directoryC/DirectoryD/ ao seu caminho, mas isso seria altamente incomum. No entanto, você poderia simplesmente digitar somefile , não importa em qual diretório você esteja e ele será executado.
  • É claro que somefile deve ser executável, o qual você define com o comando: chmod a+x /home/directoryA/directoryB/directoryC/DirectoryD/somefile
por WinEunuuchs2Unix 17.05.2018 / 01:20
1

Claro! Se somefile estiver marcado como executável, você poderá executá-lo com

~/directoryA/directoryB/directoryC/DirectoryD/somefile

Quer saber se algum arquivo é executável? Vá para o diretório dele e execute

find . -maxdepth 1 -perm -111 -type f

para ver todos os executáveis nesse diretório.

    
por K7AAY 17.05.2018 / 01:19
1

A variável shell $PATH contém os diretórios onde os executáveis são pesquisados. Adicione o diretório que contém o seu executável em $PATH e ele pode ser executado de qualquer lugar.

Adicione o arquivo .bashrc :

export PATH=$PATH:/../your_directory
    
por Pierre Legay 17.05.2018 / 10:54
-2

Existe outra maneira (de alguma forma ainda não mencionada) usando o perfil de shell ( .bashrc , .zshrc etc).

Você pode executar:

# Assuming it is a script you made, changing file permission to make it executable
chmod a+x ~/directoryA/directoryB/directoryC/directoryD/somefile

# Appending your shell profile with an alias to run the script from wherever you are
echo "alias somename=\"source ~/directoryA/directoryB/directoryC/directoryD/somefile\"" >> ~/.profile

# replace ~/.profile with config file of whichever shell you use
# Also replace source with python if the script is a python script or whichever interpreter it requires for execution
# Make sure you have #!/usr/bin/env python or #!/path/to/interpreter on your computer as the first line of your script

Embora o método acima permita que o script seja executado em qualquer lugar, você deve certificar-se de que o script não dependa do pwd (diretório de trabalho atual) para execução (a menos que seja intencional).

Você pode então executar o script como executável em qualquer diretório, como:

somename

P.S .: Por que não acrescentar o diretório ao PATH era simplesmente supor que apenas o único executável deveria ser adicionado e não um diretório cheio de executáveis como o adb-platform-tools, no qual anexar o caminho do diretório ao PATH seria o método a ser usado. usar.

    
por ToxicMender 17.05.2018 / 08:28