AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 1531440
Accepted
Paul Jurczak
Paul Jurczak
Asked: 2024-10-29 11:31:25 +0800 CST2024-10-29 11:31:25 +0800 CST 2024-10-29 11:31:25 +0800 CST

Por que esse script bash não é executado na inicialização?

  • 772

Este test.shscript:

cd test-1
source .venv/bin/activate
python test.py
deactivate

funciona bem no terminal no Ubuntu 20.04.6 com este comando:

nick@jetson:~$ ./test.sh

Quando eu o adiciono às Preferências de Aplicativos de Inicialização com:

insira a descrição da imagem aqui

não funciona. O que está errado?


Esta pergunta é diferente de Como inicio aplicativos automaticamente no login?. Não estou perguntando como inicio aplicativos automaticamente no login. Estou perguntando por que um comando diferente tem que ser usado na Commandlinha de comando Add Startup programdo que o comando que eu digito no terminal em ~pasta.

bash
  • 2 2 respostas
  • 578 Views

2 respostas

  • Voted
  1. Best Answer
    kos
    2024-10-29T14:45:30+08:002024-10-29T14:45:30+08:00

    Esta pergunta é diferente de Como inicio aplicativos automaticamente no login?. Não estou perguntando como inicio aplicativos automaticamente no login. Estou perguntando por que um comando diferente tem que ser usado na Commandlinha de comando Add Startup programdo que o comando que eu digito no terminal em ~pasta.

    Quando você cria um "aplicativo de inicialização", o que acontece nos bastidores é:

    1. Um arquivo .desktop é criado em ~/.config/autostart, contendo uma Execlinha que contém o "comando" que você especificou;
    2. Na inicialização da sessão, o arquivo da área de trabalho é analisado e avaliado de acordo com as especificações do Freedesktop .

    Citando a seção relevante da página (ênfase minha):

    A chave Exec deve conter uma linha de comando. Uma linha de comando consiste em um programa executável, opcionalmente seguido por um ou mais argumentos. O programa executável pode ser especificado com seu caminho completo ou apenas com o nome do executável. Se nenhum caminho completo for fornecido, o executável será pesquisado no $PATH usado pelo ambiente de desktop . O nome ou caminho do programa executável não pode conter o sinal de igual ("="). Os argumentos são separados por um espaço.

    Então, a razão pela qual ./test.shfalha é simplesmente: ele não está em conformidade com nenhuma das especificações do Freedesktop, pois não é um caminho completo nem um nome de um executável.

    Observe também que há mais regras que um "comando" precisa obedecer (você pode encontrá-las na página que vinculei), mas passar por essas verificações geralmente funciona:

    1. Se você precisar executar algo que não esteja em PATH, você precisa colocar o caminho completo, caso contrário, você pode colocar apenas o nome do executável;
    2. Você não pode usar shell-isms (variáveis, aliases, funções, redirecionamentos, pipes e coisas do tipo). Variáveis ​​podem ser injetadas no ambiente do executável usando env( env foo=bar executable). Se você precisar de algo mais, você pode usar principalmente sh -c/ bash -c( sh -c '<input command1 | command2'), ou criar um script wrapper em torno do seu script real.
    • 4
  2. kos
    2024-10-29T11:57:43+08:002024-10-29T11:57:43+08:00

    Se o seu script realmente não tiver um shebang ( #!/bin/bash), uma solução seria executar:

    bash /home/your_username/test.sh
    

    em vez disso. No entanto, a solução "correta" seria adicionar um shebang ao script e executar apenas:

    /home/your_username/test.sh
    

    O shebang é necessário em outros contextos (como ao executar o script de um shell que não é Bash) para fazer uso dos recursos do Bash, como por exemplo sourcequando o script é executado de sh.

    • 3

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve