Дистры, использующие systemd
, используют hostnamectl
для установки имени хоста:
$ sudo hostnamectl set-hostname exchange.mydomain.com
Вам придется выйти из системы и снова войти, чтобы увидеть изменения в подсказке оболочки, но команда hostname
покажет изменения сразу после выполнения команды.
$ sudo hostnamectl --help
hostnamectl [OPTIONS...] COMMAND ...
Query or change system hostname.
-h --help Show this help
--version Show package version
--no-ask-password Do not prompt for password
-H --host=[USER@]HOST Operate on remote host
-M --machine=CONTAINER Operate on local container
--transient Only set transient hostname
--static Only set static hostname
--pretty Only set pretty hostname
Commands:
status Show current hostname settings
set-hostname NAME Set system hostname
set-icon-name NAME Set icon name for host
set-chassis NAME Set chassis type for host
set-deployment NAME Set deployment environment for host
set-location NAME Set location for host
Все перечисленное в rc.local
управляется root
.
По какой-то причине кажется, что переменная HOME
не установлена при запуске rc.local
(, что привело бы к /root/
, и я полагаю, что вы хотите, чтобы ваши обычные пользователи находились дома под/home/user/
).
Чтобы это исправить, замените $HOME
в вашем скрипте на полный путь, т.е. /home/user/
.
Проблема не в том, чтобы найти сценарий, проблема в том, что вы полагаетесь на $HOME
наличие значения в среде, которая, возможно, не определила эту переменную (среда rc.local
работает в ). $HOME
обычно имеет значение только после входа в систему (и в некоторых других задокументированных местах, например, в заданиях cron ).
Вы полагаетесь на то, что $HOME
имеет значение либо потому, что вы используете его неявно вcd
(без аргумента ), либо в расширении с тильдой.
Один из способов исправить это — явно установить $HOME
в скрипте:
HOME=${HOME:-/home/pi}
export HOME
Это установит $HOME
на /home/pi
, если только оно уже не установлено и не -пусто.
Обратите внимание, что команды, запускаемые из rc.local
, выполняются от имени пользователя root. Чтобы запустить скрипт от имени конкретного пользователя, используйте
su username -c bash /home/pi/Desktop/mount_and_run.bash &
в rc.local
.
Вы можете даже захотеть использовать su -l username -c bash...
, который будет имитировать полный вход в систему, что, в свою очередь, установит $HOME
в соответствующее значение для данного пользователя.