Самый простой способ изучить, как все работает в bash с командой echo. В случае ~ используйте это:
$ echo ~
/home/rick
$ echo '~'
~
$ echo "~"
~
$ echo `~`
bash: /home/rick: Is a directory
Как вы можете видеть, когда вы указываете одиночную кавычку или используете двойные кавычки вокруг ~, она интерпретируется буквально как строка и не расширяется как переменная , Когда вы используете backticks (`), он выполняется как команда и генерирует сообщение об ошибке.
Вы можете запустить свой файл сценария в качестве загрузочного приложения (System - Preferences - Startup Applications в Ubuntu 10.04 LTS - не знаете, где эквивалент находится в 11.10).
Например, чтобы запустить inosync при загрузке, я добавил запись в Startup Applications с помощью
Name=inosync
Command=/home/toaster/inosync.sh
Comment=Mirror DataDisk to Barracuda_01
Файл сценария bash inosync.sh должен быть включен для выполнения. Этого можно достичь с помощью sudo nautilus в терминале, перехода к файлу, щелчка правой кнопкой мыши и выбора «Свойства», перехода на вкладку «Разрешения» и проверки «Разрешить выполнение файла как программы».
Правильное место для скриптов, которые нужно запустить при загрузке, - это вызвать скрипт из /etc/rc.local
Комментарии в файле суммируют его:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.