Почему я не могу запустить этот скрипт?

gdm / gnome-power-manager может обнаружить это и приостановить машину соответственно. для Попытки GNOME2

gconftool-2 --direct --config-source=xml:readwrite:/etc/gconf/gconf.xml.defaults -s --type=int /apps/gnome-power-manager/timeout/sleep_computer_ac 600

и

gconftool-2 --direct --config-source=xml:readwrite:/etc/gconf/gconf.xml.defaults -s --type=int /apps/gnome-power-manager/timeout/sleep_computer_ac 600

как корень. Вы, возможно, должны перезапустить gdm чтобы настройки вступили в силу. (число является секундами, таким образом, 600 10 минут).

под GNOME3 существует подобная пара gsettings ключи (вышеупомянутое тихо перестало работать).

Если Вы не выполняете GNOME, Вы могли бы осмотреть источник gnome-power-manager выяснять, как это устанавливает безделье.

0
14.06.2011, 16:38
3 ответа

Также помещение целого echo '...' команда в

cat  <<'EOF' >> /home/USER/.bashrc

...

EOF

помог бы Вам избавиться многие внутренние кавычки.

6
28.01.2020, 02:13

Как другие ответы упоминают, проблема вкладывается кавычки.

Я предлагаю, чтобы Вы рассмотрели как, заключив работы в кавычки в ударе. Короче говоря, кавычки (любого вида, одинарных кавычек ', двойные кавычки " или обратные галочки'), почти всегда соответствуют первому вхождению кавычки того же вида; необходимо выйти из кавычки для него для не соответствия (но Вы не можете выйти из одинарных кавычек ').

Так, (1) апостроф в what's окружает одинарную кавычку echo ':

echo '
# what's my pub. ip?

Другими словами, Ваш echo управляйте концами после ... ip? и остальное сразу выполняется ударом как команда, которая является, по-видимому, не, что Вы имели в виду.

Как Rajish' ответ предполагает, использование здесь-документов решает многие проблемы заключения в кавычки:

echo >> /home/USER/.bashrc <<'__EOF__'
# what's my pub ip?
echo "we can nest quotes in here"
__EOF__

(2) Затем как уже сообщается в ответе ультраполотна пилы, кавычки на этой строке не соответствуют правильно:

alias myip="curl -s "http://checkip.dyndns.org/" | grep -o "[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" | head -1"

Вы, вероятно, хотение первого и последнего " символы (двойной кавычки) на строке, чтобы соответствовать, но колотить соответствуют им в порядке, из которого с ними встречаются на строке (слева направо), таким образом, двойная кавычка, оставленная "http://... закрывает кавычки после alias myip=". Точно так же | grep -o и | head -1 рассматриваются в кавычках, и http://... и [0-9]*\.... не. (Это не будет иметь никаких серьезных синтаксических последствий в этом случае, кроме grep наблюдение обратных косых черт, но имеет в виду его для будущего.)

Одно решение состоит в том, чтобы выйти из двойных кавычек (и также обратные косые черты, поскольку обратные косые черты не теряют свое особое значение в двойных кавычках):

alias myip="curl -s \"http://checkip.dyndns.org/\" | grep -o \"[0-9]*\\.[0-9]*\\.[0-9]*\\.[0-9]*\" | head -1"

Другое обходное решение, которое работает в этом случае, должно использовать одинарные кавычки ' вместо этого; любой для определения псевдонима:

alias myip='curl -s "http://checkip.dyndns.org/" | grep -o "[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" | head -1'

или для команд в определении псевдонима:

alias myip="curl -s 'http://checkip.dyndns.org/' | grep -o '[0-9]*\\.[0-9]*\\.[0-9]*\\.[0-9]*' | head -1"

(3) Наконец, в строках:

export PROMPT_COMMAND='PS1="`
if [[ \$? = "0" ]];

' (одинарная кавычка) символ после PROMPT_COMMAND= интерпретируется как запуск новой мультилинии отдельно заключенная в кавычки строка, которая заканчивается в строке:

fi`[\u@\h \w]\[\e[m\] "'

Таким образом другая отдельно заключенная в кавычки строка запускается ' символ на последней строке, но удар никогда не видит одинарной кавычки соответствия. Таким образом Вы получаете ошибку:

unexpected EOF while looking for matching `''
11
28.01.2020, 02:13

Ну, одной проблемой является эта строка:

myip="curl -s "http://checkip.dyndns.org/" | grep -o "[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" | head -1"

bash перепутан кавычками посреди строки. При помещении "кавычек в кавычках", Вы обычно хотите выйти из них, как так:

myip="curl -s \"http://checkip.dyndns.org/\" | grep -o \"[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\" | head -1"
1
28.01.2020, 02:13

Теги

Похожие вопросы