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?

grerdas
fonte
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.

mj.scintilla
fonte
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.

RobotHumans
fonte
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.

Vinay
fonte