Erro de script da shell [fechado]

0

Primeiro, meu ambiente de trabalho é o GNOME. Fiz um script para criar o arquivo de área de trabalho de um programa de início automático. No entanto, tenho erro.

Make Autostart Script
Name > nabi // I input nabi
./make_autostart_script: line 11: ~./config/autostart/nabi.desktop: No such file or directory
Descriptive Name > 

E o código é

# !/bin/bash
# This script make autostart script

echo Make Autostart Script

# Name
echo -n "Name > "
read name
touch ~/.config/autostart/$name.desktop
echo "[Desktop Entry]" >> ~/.config/autostart/$name.desktop
echo "Name=$name" >> ~./config/autostart/$name.desktop

# Generic Name
echo -n "Descriptive Name > "
read generic_name
echo "GenericName=$generic_name" >> ~/.config/autostart/$name.desktop

# Comment
echo -n "Comment > "
read comment
echo "Comment=$comment" >> ~/.config/autostart/$name.desktop

# Exec
echo -n "Location of program > "
read exec
echo "Exec=$exec" >> ~/.config/autostart/$name.desktop

# Terminal
echo -n "Do you want to execute it in terminal?(Y/n) > "
read yn
if [$yn -eq y];then
        echo "Terminal=true" >> ~/.config/autostart/$name.desktop
else
        echo "Terminal=false">> ~/.config/autostart/$name.desktop
fi

# Type
echo "Type=Application" >> ~/.config/autostart/$name/desktop

# Autostart
echo "X-GNOME-Autostart-enabled=true"

Como posso resolver o problema?

    
por 홍세정 18.07.2017 / 16:22

2 respostas

3

O ~./config nessa linha deve ser ~/.config

    
por user713566 18.07.2017 / 16:32
2

Problema mostrado no contexto:

# Name
echo -n "Name > "
read name
touch ~/.config/autostart/$name.desktop
echo "[Desktop Entry]" >> ~/.config/autostart/$name.desktop
echo "Name=$name" >> ~./config/autostart/$name.desktop

deve ser:

# Name
echo -n "Name > "
read name
touch ~/.config/autostart/$name.desktop
echo "[Desktop Entry]" >> ~/.config/autostart/$name.desktop
echo "Name=$name" >> ~/.config/autostart/$name.desktop

com a mudança sendo (negrito para ênfase):

echo "Name=$name" >> ~ /. config/autostart/$name.desktop

que aponta para uma pasta chamada .config , que está no seu diretório pessoal ( ~ para breve)

em vez de:

echo "Name=$name" >> ~ ./ config/autostart/$name.desktop

que aponta para um diretório inexistente chamado ~. (a menos que você tivesse um usuário chamado . , no qual ele apontaria para a pasta base de . )

Como nota lateral também:

Parece que você encontrará um erro na seção # Type .

# Type
echo "Type=Application" >> ~/.config/autostart/$name/desktop

deve ser

# Type
echo "Type=Application" >> ~/.config/autostart/$name.desktop

se não me engano. (a diferença está substituindo $name/desktop por $name.desktop

Quanto à linha 31:

if [$yn -eq y];then deve ter pelo menos if [ $yn = y ]; then mas provavelmente mais propriamente

if [ "$yn" = "y" ] || [ "$yn" = "Y" ];then

que cobriria se você digitar Y ou y. Anote que usar -eq é para comparações numéricas e não funcionará nesse caso.

Espero que ajude! Codificação feliz.

    
por ben-Nabiy Derush 18.07.2017 / 19:31