Переменные, установленные в оболочке, не читаются в «bash -c 'command'»

Я задавался тем же вопросом и наконец нашел ответ:

Визуально оба режима ведут себя почти одинаково, поэтому это сбивает с толку. Как вы заметили, в обоих режимах перетаскиваемое окно занимает всю, половину или четверть экрана.

Но когда вы используете клавишу-модификатор (Ctrl по умолчанию )для переключения в режим привязки , окно, которое вы привязали, будет считаться «частью экрана». Это означает, что другие окна, которые вы максимизируете, попытаются избежать пространства, занимаемого окном привязки. Если вы плитка , а не привязка (, то есть по умолчанию, если вы не используете ctrl ), развернутые окна просто закроют его.

Таким образом, разница между двумя режимами на самом деле заключается не в поведении текущего окна, к которому вы привязываетесь, а в поведении других окон, которые вы максимизируете позже.

Источник:http://segfault.linuxmint.com/2013/07/new-window-tiling-and-snapping-functionality/

You can hold a modifier key (defaults to Control) to toggle into “snap” mode – this is unique in that a snapped window will be considered part of the screen real estate, and maximized windows will avoid snapped windows. Tiled windows (unmodified) are treated just as before – they are ‘stuck’ to the screen edge, but don’t receive any special treatment.

Проверено и подтверждено на Тессе 19.1

0
14.03.2020, 18:35
2 ответа

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

Вам нужно сделать это явно с помощью export, например.:

$ export test=foo
$ bash -c 'echo test=$test'
test=foo

За исключением того, что sudoвсе еще может очищать среду перед передачей ее в bash, поэтому вместо этого вам может потребоваться использовать аргументы командной строки:

$ test=foobar 
$ sudo bash -c 'echo "$1"' sudo_bash "$test"
foobar

Нет необходимости exportздесь, и sudo_bash— это просто строка, которая используется как «имя» этой внутренней оболочки, вы бы увидели ее, если бы строка -cимела, например,. синтаксическая ошибка.

См. также:

2
28.04.2021, 23:20

Проблемы с цитированием

sudo bash -c '>> /media/'"$USER"'/rootfs/etc/profile'
test=$USER
sudo bash -c '>> /media/'"$test"'/rootfs/etc/profile'

''кавычки являются буквальными, ""кавычки позволяют расширять переменные. Я использую оба, объединяя их вместе. Это также сработало бы, если бы я использовал только "".

-1
28.04.2021, 23:20

Теги

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