Eu escrevi um roteiro Quando é iniciado, ele não para e continua recebendo dados da Internet. Eu posso chamar assim:
cd /User/Desktop/project/internetScanner/
python3 main.py start
Mas eu gostaria de chamá-lo diretamente do terminal assim, dentro do destino:
internetScanner start
Como posso fazer isso?
linux
bash
python
shell-script
Ted Wong
fonte
fonte
Respostas:
Você provavelmente deve renomear seu arquivo
main.py
parainternetScanner
. As extensões no * nix são puramente opcionais. Não deveria importar aqui.Em seguida, adicione a seguinte linha neste arquivo, logo no início:
Isso garantirá que, quando o shell executar o arquivo, ele saberá usá-lo
python3
para interpretar o conteúdo. Isso é conhecido como Shebang . Agora, torne o arquivo executável:Agora você pode executar seu programa a partir de
/User/Desktop/project/internetScanner/
:Seu programa será executado em primeiro plano e continuará sendo executado até você pressionar Ctrl- C. Se você não quiser isso, também poderá iniciar o programa em segundo plano, adicionando um e comercial após o comando:
Isso permitirá que seu programa seja executado, mas você pode continuar usando seu shell. Isso se chama controle de trabalho, e há um tutorial simples sobre isso aqui .
Se você deseja agora executar o programa de qualquer lugar do sistema, é necessário adicionar o
internetScanner
diretório ao seuPATH
: O que são PATH e outras variáveis de ambiente e como posso configurá-las ou usá-las?fonte
X &
não desanexa o processo do shell de controle, apenas o coloca em segundo plano, o que significa que, se o shell sair, ele receberá o sinal TERM; por isso, se você não quer que você deve usar desanexar ,detach ./internetScanner start
.nohup
,disown
ouat
, et cetera. Como desanexar um processo completamente do Terminal?main.py
, desde que esteja vinculado ainternetScanner
algum lugar em $ PATH.Supondo que nenhum outro arquivo
/User/Desktop/project/internetScanner/
seja necessário, se você deseja instalar para um único usuário, vincule (ln -s
)main.py
para$HOME/bin/internetScanner
. Você provavelmente precisará mkdir$HOME/bin
primeiro.Da próxima vez que você fizer login,
$HOME/bin
provavelmente será adicionado ao seu PATH. Se você deseja disponibilizá-lo para todos os usuários, copie-o para/usr/local/bin
.Se precisar executar
/User/Desktop/project/internetScanner/
, inicie importandoos
e chamandoou crie um script do iniciador
$HOME/bin
ou/usr/local/bin
que seja alterado/User/Desktop/project/internetScanner/
e execute o script.fonte
Coloque
alias internetScanner "python /User/Desktop/project/internetScanner/main.py"
no arquivo .aliases (para csh). Para o bash, insiraalias internetScanner="python /User/Desktop/project/internetScanner/main.py"
.bashrc. Depois disso, você pode usar o internetScanner start de qualquer lugar.fonte
.aliases
arquivo. Isso é algo padrão para o Bash? ou você precisa explicitamente fornecê-lo no seu.bashrc
?