Во-первых, моя среда рабочего стола - 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"
Как я могу исправить проблему?
Проблема, показанная в контексте:
# 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 для цифровых сравнений и не будет работать в этом случае.
Надеюсь, что это поможет! кодирование.
Проблема, показанная в контексте:
# 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 для цифровых сравнений и не будет работать в этом случае.
Надеюсь, что это поможет! кодирование.