Я начал бы его при загрузке и давал ему подождать, пока не будет подключен wlan0. Вы можете проверить это с помощью
#!/bin/bash
while true; do
# testing...
LC_ALL=C nmcli -t -f DEVICE,STATE dev | grep -q "^wlan0:connected$"
if [ $? -eq 0 ]; then
break
else
# not connected, sleeping for a second
sleep 1
fi
done
# now connected, run the script
Вы можете точно увидеть, что выполняется с помощью режима подробной настройки bash.
Для оболочки без входа:
$ bash -v 2>&1 | less
Для оболочки входа:
[ f2]У меня нет системы 12.04, чтобы подтвердить, что .bashrc выполняется при использовании оболочки входа. Я совершенно уверен, что так оно и есть. Если это не так, я бы предположил, что вы или что-то еще вызываете bash от вашего имени, не указывают оболочку входа. Примером этого является удаленное выполнение команды через ssh.
ssh, чтобы получить оболочку, порождает оболочку входа
$ ssh remotehost
ssh для вызова удаленной команды, не порождает оболочку входа
$ ssh remotehost remotecommand
Также см. параметр bash man -norc, в котором упоминается, что этот параметр включен по умолчанию, если bash вызывается как sh. Это было важно, но, тем не менее, теперь, когда ubuntu перешел в тире для sh вместо bash.