экспорт переменных env в linux не работает с переменными - PullRequest
1 голос
/ 03 августа 2020

Я пытаюсь экспортировать значение $ fullPath в переменную env с ключом WALLPAPER_PATH. Но когда я выполняю следующий сценарий, переменная пуста

/ home / joco / .wallpapers / setwallpaper

#!/bin/bash
wallpapers=/home/joco/.wallpapers/pictures/
folder=$(ls $wallpapers | shuf -n1)
file=$(ls $wallpapers$folder | shuf -n1)
fullPath=file://$wallpapers$folder/$file
gsettings set org.gnome.desktop.background picture-uri $fullPath
export WALLPAPER_PATH=$fullPath

Shell

╭─joco@Nantaror ~/.wallpapers ‹master*› 
╰─$ ./setwallpaper

╭─joco@Nantaror ~/.wallpapers ‹master*› 
╰─$ echo $WALLPAPER_PATH

╭─joco@Nantaror ~/.wallpapers ‹master*› 
╰─$

как видите, пусто.

1 Ответ

2 голосов
/ 03 августа 2020

Не выполнять сценарий. Отправьте его, например . ~/.wallpapers/setwallpaper.

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

В bash, в качестве альтернативы приведенной выше точечной нотации можно создать сценарий с помощью команды source, например source ~/.wallpapers/setwallpaper. Эта форма, однако, нестандартная (не POSIX) и не будет работать в некоторых очень распространенных оболочках, таких как dash (который является /bin/sh по умолчанию в системах, подобных Debian и Ubuntu).

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

...