Скрипт запуска, монтирование и привязка в зависимости от наличия дисков?

Что такое код для запуска скрипта при запуске, который связывает домашние папки с другими папками в зависимости от наличия диска?

Поскольку большинство моих файлов хранятся на отдельных дисках и в других местах, чем / home / John / Folder, я использую код терминала для привязки домашних папок к разным местам. Например, я связываю папку / Documents с / Dropbox / Documents, чтобы она постоянно сохранялась. Я узнал, как это сделать через терминал, и где-то читал, что вы можете поместить код в скрипт /etc/rc.local и что этот скрипт (rc.local) запускается при запуске. Я поместил код в этот скрипт, но я не уверен, как заставить его запускаться при запуске. Прямо сейчас мне нужно подождать, пока компьютер запустится, затем запустить код в терминале. Полный код этого скрипта, который я установил, приведен ниже.

sudo mount -o bind /media/Storage/Music ~/Music && sudo mount -o bind /media/storage/downloads ~/Downloads && sudo mount -o bind /media/2TB/Videos ~/Videos && sudo mount -o bind /home/john/dropbox/documents ~/Documents && sudo mount -o bind /home/john/dropbox/Photos ~/Pictures && exit 0

Выход 0 необходим для запуска сценария, согласно комментарию в сценарии.

Поскольку это на ноутбуке, и я храню свои видеофайлы на внешнем диске, есть ли возможность добавить простое «Если есть, также привязать ~ / Videos к / media // Videos», а если нет, пропустите над ним? Или поместите этот код в конец, чтобы он не влиял на выполнение выше?

1
задан 3 February 2011 в 19:32

2 ответа

С вашим сценарием связано несколько проблем:

  1. Вы объединяете (& amp; & amp;) несвязанные команды, отказ одной из них пропустит остальные.
  2. Вы используете «~» в имени пути, скрипт вызывается с root, что означает, что он будет переведен в / root, вы должны использовать полное имя пути
  3. Вам не нужно используйте sudo, потому что он работает с root.

Следующий скрипт выполнит то, что вы просили:

[[ -d /media/Storage/Music ]] &&  mount -o bind /media/Storage/Music /home/your_user/Music 
[[ -d /media/storage/downloads ]] && mount -o bind /media/storage/downloads /home/your_user/Downloads
[[ -d /media/2TB/Videos ]] && mount -o bind /media/2TB/Videos /home/your_user/Videos 
mount -o bind /home/john/dropbox/documents /home/your_user/Documents 
mount -o bind /home/john/dropbox/Photos /home/your_user/Pictures
exit 0
0
ответ дан 3 February 2011 в 19:32

В BASH-скрипте ...

#check for existence of a directory
if [ ! -d /media/Videos ]; then
    // do nothing or echo "not available"
else
    // action
fi

#check for existence of a file
if [ ! -f /media/Videos/i_am_mounted ]; then
    // do nothing or echo "not available"
else
    // action
fi

Вы также можете прекратить использование & amp; & amp; сюда. (Если у вас есть command1 && command2, команда2 выполняется тогда и только тогда, когда команда 1 завершена с кодом выхода 0 (успех).) И у вас есть локальная сеть. Часть сети может принадлежать сценариям, размещенным в /etc/network/if-up.d и /etc/network/if-down.d. Локальная часть может принадлежать /etc/rc.local - чтобы прекратить использовать команду sudo.

0
ответ дан 3 February 2011 в 19:32

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

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