Bash 在linux中导出环境变量不会';不能处理变量

Bash 在linux中导出环境变量不会';不能处理变量,bash,environment-variables,Bash,Environment Variables,我正在尝试将$fullPath的值导出到一个env变量,该变量的键为WALLPAPER\u PATH。但是当我执行下面的脚本时,var是空的 /home/joco/.wallps/setwallper #/bin/bash 壁纸=/home/joco/。壁纸/图片/ 文件夹=$(ls$墙纸| shuf-n1) 文件=$(ls$壁纸$文件夹| shuf-n1) fullPath=file://$wallpers$文件夹//$file gsettings set org.gnome.desktop.

我正在尝试将$fullPath的值导出到一个env变量,该变量的键为WALLPAPER\u PATH。但是当我执行下面的脚本时,var是空的

/home/joco/.wallps/setwallper

#/bin/bash
壁纸=/home/joco/。壁纸/图片/
文件夹=$(ls$墙纸| shuf-n1)
文件=$(ls$壁纸$文件夹| shuf-n1)
fullPath=file://$wallpers$文件夹//$file
gsettings set org.gnome.desktop.background picture uri$fullPath
导出壁纸路径=$fullPath
壳牌公司

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

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

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

正如您所看到的,它是空的。

不要执行脚本。源代码,比如
~/。壁纸/设置壁纸

执行shell脚本时,它将作为子进程运行,子进程永远不会影响其父进程的环境

bash
中,作为上述点表示法的替代方法,可以使用
source
命令(如
source~/.wallps/setwallper
)来生成脚本。但是,此表单是非标准的(非POSIX),在一些非常常见的shell(如
dash
)下无法工作(这是debian和类似ubuntu的系统上的默认
/bin/sh


附加说明:除非您明确希望分词和路径名扩展,否则shell变量应始终位于双引号内。

不要执行脚本。源代码,比如
~/。壁纸
。在执行shell脚本时,它作为子进程运行,子进程永远不会影响其父进程的环境。您应该双引号引用对variabes的所有引用:
folder=“$(ls“$wallps”| shuf-n1)”
etc.tl;但是我想你想在“$wallpapers/$folder”@John1024之间划一条斜线,非常感谢,就这样做了。你想把你的评论作为一个答案,这样我就可以把它标记为已接受answer@Jocomol很高兴它起作用了。答案贴出来了。