Все ваши проблемы связаны с цитированием, а не с окружением.
When a shell runs an external executable as a command, we can pass environment variables into the executable.
Да, это способ установить переменные среды для команды, внешней или иной.
А вот чего вам не хватает в этой строке [а]:
$ var=3 /bin/echo "$var"
Дело в том, что оболочка расширяет переменную при построении аргументов, и, если переменная var
не установлена в оболочке, которая запускает команду, это то, что фактически выполняется:
$ var=3 /bin/echo ""
Чтобы увидеть настоящее расширение оболочки, запустите:
$ var=RunningShell ; var=3 /bin/echo "$var"
RunningShell
Одним из (часто небезопасных )способов отложить вычисление переменной является:
$ var=3 eval /bin/echo '"$var"'
3
Во втором примере вы поменялись кавычками:
$ var=3 bash -c "/bin/echo '$var'"
Ничего не печатает, так как фактическая командная строка становится:
$ var=3 bash -c "/bin/echo ''"
Поскольку значение (неустановленной )переменной $var расширяется. Вы наверное это имели в виду:
$ var=thisis3 bash -c '/bin/echo "$var"'
thisis3
В этом случае одинарные кавычки предотвращают расширение переменной исполняемой оболочкой, оставляя расширение исполняемой оболочке(bash -c
).
Используйте env, чтобы увидеть окружение.
Не запускайте exec в текущей оболочке, так как это закроет работающую оболочку.
Вы можете сделать это, чтобы не закрывать работающую оболочку :
$ var=3 exec /bin/echo \$var | cat
$var
Так как закрытая оболочка будет закрытой в любом случае,первая переходная -обечайка трубы.
Но это не покажет вам значение var в среде. Чтобы увидеть переменные в среде, используйте команду для просмотра среды:
$ var=3 env | grep var
var=3
[а] В написанной вами команде были обратные кавычки `
, замена их на одинарные позволит избежать раскрытия переменной и напечатать $var
.:
$ var=3 /bin/echo '$var'
$var
Пробовали ли вы решение вhttps://enochtsang.com/articles/scaling-two-monitors-differently-on-linux-mint?
В вашем случае создайте файл с именем .xsession
в вашем домашнем каталоге, в терминале вы можете сделать это с помощьюtouch ~/.xsession
Во-вторых, откройте его в текстовом редакторе и вставьте это:
#!/usr/bin/env bash
xrandr --output HDMI-0 --scale 2x2
Сделать файл исполняемымchmod +x ~/.xsession
Добавьте его как приложение для запуска в Приложения для запуска >> (+ )>> Пользовательская команда.
Name: Displays
Command: /home/your_user_name/.xsession
Comment:
Startup delay: 0
Кроме того, не мешало бы немного пошуметь на форумах Mint или на Github, поэтому команда Linux Mint внедрила эту функцию раз и навсегда.