Я протестировал китайскую Википедию и с 32.0.1687.2 и с 33.0.1711.3, и ни у одного из них не было проблемы при отображении заголовка. Btw, хром действительно имеет журнал. Попробуйте стартовый хром от эмулятора терминала как такового:
chromium --enable-logging --v=1 https://zh.wikipedia.org/
Затем проверьте, ~/.config/chromium/chrome_debug.log
.
Если вы хотите, чтобы весь скрипт запускался от имени другого пользователя, мой обычный способ сделать это - добавить что-то похожее на следующее в самом верху скрипта:
target_user="foo"
if [ "$(whoami)" != "$target_user" ]; then
exec sudo -u "$target_user" -- "$0" "$@"
fi
Обратите внимание, что я использую sudo
здесь, а не su
. su
чрезвычайно затрудняет правильную передачу аргументов, в то время как sudo
не имеет этой проблемы.
Если вы хотите запустить только небольшой фрагмент кода, вы можете в качестве альтернативы сделать что-то вроде:
target_user="foo"
sudo -u "$target_user" sh -s "$@" <<'EOF'
echo "$@"
EOF
Это запустит sh
, передаст ему аргументы текущего сценария, а затем выполнит предоставленный сценарий. через heredoc.
Помещая EOF
в кавычки, вы фактически цитируете «здесь документ»
( echo $ 1
), так что $ 1
интерпретируется оболочкой user2
.
Но у этой оболочки нет позиционных параметров.
Я не могу протестировать их прямо сейчас, но вот несколько подходов, которые могут сработать:
Не цитировать EOF
:
sudo su user2 << EOF
эхо $ 1
EOF
Передавать значения через среду:
export my_val = "$ 1"
sudo su user2 << 'EOF'
эхо "$ my_val"
EOF
Это может сработать :
#!/bin/bash
su - user2 -c 'echo "$0" "$@"' -- "$@"
Используйте простые кавычки '
для передачи аргумента команды в su
, чтобы вам не пришлось избегать двойных кавычек "
.
Ссылки :
Эвакуация аргументов функции bash для использования su -c - Переполнение стека
bash - Передача аргументов в оболочку, предоставленную su - Unix & Linux Stack Exchange