Ошибка сценария оболочки [закрыто]

Во-первых, моя среда рабочего стола - GNOME. Я создал сценарий для создания файл рабочего стола программы автозапуска. Однако я получил ошибку.

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

И код:

# !/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"

Как я могу решить проблему?

0
задан 18 July 2017 в 07:22

2 ответа

~./config в той строке должен быть ~/.config

3
ответ дан 2 November 2019 в 21:56

Проблема показана в контексте:

# 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

должен быть:

# 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

с изменением тем, чтобы быть (полужирный для акцента):

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

который указывает на названную папку .config который находится в Вашем корневом каталоге ( ~ если коротко)

вместо:

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

который указывает на несуществующий названный каталог ~. (если Вам не назвали пользователя . , в котором это указало бы на .домашняя папка)

Как примечание стороны также:

Кажется, что Вы встретитесь с ошибкой в разделе # Тип.

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

должен быть

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

если я не ошибаюсь. (различие заменяет $name/desktop с $name.desktop

Относительно строки 31:

if [$yn -eq y];then должен быть самое меньшее if [ $yn = y ]; then но вероятно более правильно

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

который покрыл бы если Вы тип Y или y. Обратите внимание то использование -eq для сравнений цифры и не будет работать в этом случае.

Надежда, которая помогает! Счастливое кодирование.

2
ответ дан 2 November 2019 в 21:56

Другие вопросы по тегам:

Похожие вопросы: