Я пытаюсь получить файл config.sh из пути, определенного в переменной. Как мне получить мою переменную для расширения в текущей консоли. Вот мои команды:

[root@mysystem]#export AUTO_PATH="/mnt/share/__automation__"         
[root@mysystem]#runuser -l $(who | grep tty2 | awk -F " " '{print $1}') -c 'source $AUTO_PATH/config.sh;gnome-screensaver-command -d;xset dpms force on'

Вот результаты, которые я получаю:

-bash: /config.sh: No such file or directory
** Message: Failed to get session bus: Command line `dbus-launch --autolaunch=cb264e3a020119540fab776c00000007 --binary-syntax --close-stderr' exited with non-zero exit status 1: Autolaunch error: X11 initialization failed.\n
xset:  unable to open display ""

Я работаю на Fedora 16 и пытаюсь отключить заставку перед тем, как сделать снимок экрана. Мое значение $DISPLAY хранится в моем config.sh

1 ответ1

1

Измените одинарные кавычки на двойные:

Это:

-c 'source $AUTO_PATH/config.sh;gnome-screensaver-command -d;xset dpms force on'

Должно быть так:

-c "source $AUTO_PATH/config.sh;gnome-screensaver-command -d;xset dpms force on"

Из справочной страницы bash(1) :

 Enclosing characters in single quotes preserves the  literal  value  of
 each character within the quotes.  A single quote may not occur between
 single quotes, even when preceded by a backslash.

 Enclosing characters in double quotes preserves the  literal  value  of
 all  characters  within the quotes, with the exception of $, `, \, and,
 when history expansion is enabled, !.  The characters $  and  `  retain
 their  special meaning within double quotes.

Это означает, что любое выражение $ , такое как расширение переменной, по-прежнему учитывается, когда оно в двойных кавычках, но не в одинарных.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .