Size: a a a

2020 June 12

NG

Nicholas Guriev in pro.vim
Павел
а никто не подскажет  по башу, набросал себе такой скрипт: https://pastebin.com/ajs0NPQa
строка 11, проблема в том что экранирование $ не срабатывает, происходит автоподстановка системных переменных, а мне нужно записать в том месте символы $
Там попытка выполнить текущий сценарий с правами суперпользователя? Почему бы так и не записать:

if [ "$(id -u)" != 0 ]; then
 exec sudo -H bash "$0" "$@"
fi
cd /opt
...
источник

NG

Nicholas Guriev in pro.vim
никаких экранирований не потребуется тогда
источник

П

Павел in pro.vim
не, судьбу обмануть через printf не вышло, видимо раскрывается в момент объявления
источник

П

Павел in pro.vim
чёт непонимаю откуда возьмутся "$0" "$@"
источник

NG

Nicholas Guriev in pro.vim
Павел
чёт непонимаю откуда возьмутся "$0" "$@"
их интерпретатор устанавливает
источник

NG

Nicholas Guriev in pro.vim
$0 - имя текущей программы, аналогично argv[0] из С
источник

NG

Nicholas Guriev in pro.vim
$@ - аргументы командной строки, начиная с $1
источник

П

Павел in pro.vim
я не хочу ещё и аргументы командной строки приплетать, и так не работает
источник

NG

Nicholas Guriev in pro.vim
источник

GK

Georgy Komarov in pro.vim
Павел
я не хочу ещё и аргументы командной строки приплетать, и так не работает
Можно добавить в начало скрипта:
[ -z "$CLEANED" ] && exec /usr/bin/env -i CLEANED=1 /bin/bash "$0" "$@"

Но будет плохо, если имя CLEANED будет в текущем окружении.

Или просто запускать скрипт через env -i.
источник

SB

Sergey Batalev in pro.vim
Georgy Komarov
Можно добавить в начало скрипта:
[ -z "$CLEANED" ] && exec /usr/bin/env -i CLEANED=1 /bin/bash "$0" "$@"

Но будет плохо, если имя CLEANED будет в текущем окружении.

Или просто запускать скрипт через env -i.
Sudo внутри скрипта? Обычно так не делают, и целиком от судо запускают
источник

GK

Georgy Komarov in pro.vim
Sergey Batalev
Sudo внутри скрипта? Обычно так не делают, и целиком от судо запускают
Ну да, странно
источник

v

vehlwn in pro.vim
Как задать свою сонсоль для :terminal, если
источник

v

vehlwn in pro.vim
Переслано от vehlwn
let &shell='"C:\Windows\system32\cmd.exe"'
источник

v

vehlwn in pro.vim
Да я инвалид. У меня венда с nvim-qt.
источник

v

vehlwn in pro.vim
Переслано от vehlwn
Я же делаю по примеру из справки.
источник

v

vehlwn in pro.vim
vehlwn
Переслано от vehlwn
let &shell='"C:\Windows\system32\cmd.exe"'
На самом деле там должно быть cmd /k "C:\Program Files (x86)\...\vcvars64.bat". Но просто C:\Windows\system32\cmd.exe тоже не работает.
источник
2020 June 13

M

Mr_ChAI in pro.vim
Где-то я тебя видел
источник

NG

Nicholas Guriev in pro.vim
vehlwn
Переслано от vehlwn
let &shell='"C:\Windows\system32\cmd.exe"'
кажется, обратные слэши надо было экранировать
источник

v

vehlwn in pro.vim
Nicholas Guriev
кажется, обратные слэши надо было экранировать
Почему в справке их не экранируют?
источник