Смотрите на Усовершенствованное Руководство по созданию сценариев Bash, конкретно разделите 5.1, который покрывает переменные заключения в кавычки. Причина Вы, которые - переменные двойной кавычки то, потому что содержание переменной может включать пробелы. Пространство обычно является граничным символом, который обозначает перерыв в атомах в строке текста для большинства команд.
Существует хороший пример там, который иллюстрирует этот тезис:
выборка из вышеупомянутой ссылки
variable2="" # Empty.
COMMAND $variable2 $variable2 $variable2
# Executes COMMAND with no arguments.
COMMAND "$variable2" "$variable2" "$variable2"
# Executes COMMAND with 3 empty arguments.
COMMAND "$variable2 $variable2 $variable2"
# Executes COMMAND with 1 argument (2 spaces).
# Thanks, Stéphane Chazelas.
В вышеупомянутом Вы видите, что в зависимости от того, как Вы заключаете переменную в кавычки, это - или никакие аргументы, 3, или 1.
Примечание: Благодаря @StéphaneChazelas для того, если та обратная связь Руководству ABS так, чтобы это могло работать, это - путь назад в этот сайт, где он всегда участвует.
DWM не предназначен для экономии состояния вашего сеанса; Как правило, что-то более полное раздутается взорванные настольные среды.
Вместо этого вы можете писать правила в вашем config.h
для приложений, которые вы хотели бы начать с постоянных тегов.
Чтобы использовать примеры, которые вы упоминаете, браузер и терминал:
static const Rule rules[] = {
/* class instance title tags mask isfloating monitor */
{ "Vimprobable", NULL, NULL, 1 << 1, False, -1 },
{ "urxvtc", NULL, NULL, 0 << 1, False, -1 },
...
Это запускает браузер в теге 2, а терминал в теге 1.
Вы также можете добавить ключей для упрощения запуска этих приложений:
/* commands */
static const char *newtermcmd[] = { "urxvtc", "-title", "newterm", NULL };
static const char *browsercmd[] = { "vimprobable", "%s", NULL };
...
static Key keys[] = {
/* modifier key function argument */
{ 0, XK_Menu, spawn, {.v = dmenucmd } },
{ MODKEY|ShiftMask, XK_Return, spawn, {.v = newtermcmd } },
{ ControlMask|Mod1Mask, XK_b, spawn, {.v = browsercmd } },
...
Когда вы запускаете DWM, вы можете ударить свои ключи и иметь те приложения, назначенные их соответствующие теги. Если вы хотите в дальнейшем развиваться в этой концепции, вы можете написать сценарий оболочки, который открыл все приложения, которые вам требуют, и свяжитесь с ключевой последовательностью:
#!/usr/bin/env sh
# autostart apps
tabbed -d >/tmp/tabbed.xid; vimprobable2 -e $(</tmp/tabbed.xid) &
urxvtc -title "mutt" -e mutt &
$HOME/bin/shux &
до тех пор, пока есть правила для каждого из отдельных приложений, они будут назначены правильные теги; Вы просто назначаете ключевую последовательность для скрипта оболочки:
{ ControlMask|Mod1Mask, XK_a, spawn, SHCMD("$HOME/bin/autostart") },