С выходом Natty в скором времени я работал над обновлением сценария развертывания и самостоятельной настройки, чтобы мой рабочий стол 11.04 работал и выглядел так, как я хочу.
Один облом - то, что dbus, кажется, изменился и не позволяет, точно так же, как Люсид и Маверик, аутентифицировать текущего пользователя посредством вызова терминала с использованием grep и cat.
В идеале, чтобы запустить скрипт, я бы запустил sudo -s и затем запустил его как
# chmod +x install && ./install
Вместо того, чтобы возвращать мое имя пользователя .. теперь он возвращает root и применяет изменения к корневому профилю и прерывает всякий раз, когда пути не соответствуют.
Вот мой заголовок скрипта:
#!/bin/bash
ON_USER=$(echo ~ | awk -F'/' '{ print $1 $2 $3 }' | sed 's/home//g')
export $(grep -v "^#" ~/.dbus/session-bus/`cat /var/lib/dbus/machine-id`-0)
if sudo -u $ON_USER test -z "$DBUS_SESSION_BUS_ADDRESS" ;
then eval `sudo -u $ON_USER dbus-launch --sh-syntax --exit-with-session`
fi
RELEASE=$(lsb_release -cs)
Как сделать так, чтобы он возвращал реального пользователя сейчас, когда приходит natty?
Спасибо за помощь
Похоже, что $HOME
изменяется на /root
в среде вашего скрипта. Попробуйте использовать $SUDO_USER
вместо $ON_USER
и $(eval echo ~$SUDO_USER)
вместо ~
:
ak@myo5a:~$ echo "$(grep -v "^#" ~/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-0)"
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-qH8a0TOc6f,guid=873a5a81a7abe448ef2c293000000012
DBUS_SESSION_BUS_PID=2013
DBUS_SESSION_BUS_WINDOWID=8388609
ak@myo5a:~$ sudo -sH
root@myo5a:/home/ak# echo "USER=$USER; HOME=$HOME; SUDO_USER=$SUDO_USER; SUDO_HOME=$(eval echo ~$SUDO_USER)"
USER=root; HOME=/root; SUDO_USER=ak; SUDO_HOME=/home/ak
root@myo5a:/home/ak# echo "$(grep -v "^#" $(eval echo ~$SUDO_USER)/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-0)"
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-qH8a0TOc6f,guid=873a5a81a7abe448ef2c293000000012
DBUS_SESSION_BUS_PID=2013
DBUS_SESSION_BUS_WINDOWID=8388609
root@myo5a:/home/ak# sudo -u $SUDO_USER touch /cant_touch_this
touch: cannot touch `/cant_touch_this': Permission denied