如何从bash脚本中获取文件

fra*_*3xe 12 linux bash shell environment-variables

我正在尝试使用我的bash脚本中的环境变量来源文件,但它不起作用.

这是我的脚本(test.sh)的内容,位于~/scripts/test.sh.

#!/bin/bash
FILE_NAME=/tmp/source_file
touch $FILE_NAME
echo "export TEST=\"test\"" > $FILE_NAME
source $FILE_NAME
Run Code Online (Sandbox Code Playgroud)

然后,我用aliasmy ~/.bashrc.

alias testScript=~/scripts/test.sh
Run Code Online (Sandbox Code Playgroud)

但是当我使用我的脚本时testScript,它没有设置环境变量.

Jon*_*ler 11

你需要使用:

alias testScript=". ~/scripts/test.sh"
Run Code Online (Sandbox Code Playgroud)

来源文件.或者你可以source代替使用.,但我不太喜欢C shell,所以我不使用C shell表示法source.

  • 这正是我所需要的-谢谢。已投票 (2认同)

Pau*_*aul 9

环境变量仅在流程树中向下游流动.

当您键入testScriptbash进程时,它会创建子进程和执行/bin/bash或由其设置的任何内容#!

设置的任何环境变量仅保留子进程.导出会将变量复制到可能从该子项中生成的其他孙子孙女(该孩子的子女).

没有什么可以复制回父母.您需要使用source而不是运行该文件.见乔纳森的回答.

您可以尝试编辑文件 ~/.bashrc~/.login设置经常需要的环境变量.

有关in的更多说明,另请参阅https://superuser.com/q/153371https://superuser.com/questions/18988/difference-between-ab-and-export-ab-in-bash.exportbash