Como executar o script python no console sem escrever o caminho completo?


8

Eu tenho alguns scripts python em / usr / share / scripts / que eu uso frequentemente e quero poder executá-los escrevendo o nome e não o caminho completo, como eu poderia fazer isso?

echo $ PATH mostra-me:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/real/RealPlayer

Então, eu tentei escrever no terminal:

PATH="/usr/share/scripts/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/real/RealPlayer"
export

Nenhum erro mostrado e o eco $ PATH agora mostram meu novo caminho de scripts, mas quando executo scriptName recebo o comando não encontrado.

O que estou fazendo errado?


Como você fez isso antes?
Ignacio Vazquez-Abrams

Eu não fiz isso antes.
grerdas

Você não os executou? Eu pensei que você disse que usou-os muitas vezes ...
Ignacio Vazquez-Abrams

@Ignacio Vazquez-Abrams: Oh eu não entendi sua pergunta desculpe, eu corri-los como "args /usr/share/scripts/scriptName.py"
grerdas

Respostas:


9

Defina permissões executáveis ​​para scripts python por "chmod + x *"
Agora você tem duas opções:

  • Inclua seu diretório de scripts na variável env PATH ou
  • Crie links simbólicos para seus scripts um por um (ou escreva outro script para fazer o mesmo) no /usr/local/bindiretório

Exemplo:
[mzed@node02 test]$ vim printme.py

Conteúdo do arquivo:

#!/usr/bin/python
print "This is cool!"

-

[mzed@node02 test]$ mv printme.py printme
[mzed@node02 test]$ chmod +x printme
[mzed@node02 ~]$ cd /usr/local/bin/
[mzed@node02 bin]$ sudo ln -s ~/test/printme .
[mzed@node02 bin]$ ls
deskzilla  grails  grails-debug  printme  startGrails
[mzed@node02 bin]$ cd
[mzed@node02 ~]$ printme 
This is cool!
[mzed@node02 ~]$

Eu espero que isso te ajude.


Alguma possibilidade de fazer uma versão para Windows? (Eu sei que esta é uma pergunta Linux)
Iulian Onofrei

1

Ok, talvez eu seja apenas a escola mais antiga ...
Em / usr / bin, adicione scripts de shell com o cabeçalho #! / Bin / bash e sem extensão .sh. Então, nesses scripts, execute o python absolutepath.

Por que eu acho que é melhor do que as outras respostas:
Não requer a modificação de seus scripts para torná-los executáveis.
Não requer renomear seus scripts.


Não esqueça os argumentos.
Juanitogan 13/01

0

Desculpe por sugerir algo básico. Você tentou "scriptname.py", em vez de apenas "scriptname"?

Além disso, todos os scripts precisam ter permissões de execução (você pode emitir isso "chmod + x script.py"). A julgar pelo seu comentário acima, você os executou como "/ usr / share / scripts / scriptName. py args ", eles devem ter permissões de execução.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.