繁体   English   中英

如何从bash脚本中获取文件

[英]How to source file from bash script

我正在尝试使用我的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

然后我在my ~/.bashrc使用alias

alias testScript=~/scripts/test.sh

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

你需要使用:

alias testScript=". ~/scripts/test.sh"

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

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

当您向bash进程键入testScript ,它会创建一个子进程和execs /bin/bash或者由#!设置的任何内容#!

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

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

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

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

的其他方法都没有为我工作[ source /path/to/file VS . ./path/to/file . ./path/to/file ...],直到,感谢本教程,我发现使用:

#!/usr/bin/env bash shebang

而不是更简单的#!/usr/bin/env让参数传递给解释器,我认为这是关键 - 请参阅此文档以获取更多信息。

在任何情况下,如果任何形式的源命令不适合您,请尝试检查您的shebang,这可能是问题:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM