假设我有这样的脚本:
export.bash:
#! /usr/bin/env bash
export VAR="HELLO, VARIABLE"
当我执行脚本并试图访问$VAR时,我没有得到任何值!
echo $VAR
是否有一种方法通过执行export来访问$VAR。没有来源的Bash ?
假设我有这样的脚本:
export.bash:
#! /usr/bin/env bash
export VAR="HELLO, VARIABLE"
当我执行脚本并试图访问$VAR时,我没有得到任何值!
echo $VAR
是否有一种方法通过执行export来访问$VAR。没有来源的Bash ?
当前回答
我不认为这可以做到,但我找到了一个使用别名的变通办法。只有当您将脚本放在scripts目录中时,它才会工作。否则,您的别名将具有无效的名称。
唯一的解决方法是能够在文件中使用同名函数,并且在使用它之前不必费心查找它。将以下代码添加到~/.bashrc文件中:
alias myFunction='unalias myFunction && . myFunction && myFunction "$@"'
您现在可以调用myFunction,而无需首先获取它。
其他回答
如果你想为调用shell设置一个变量,有一个使用c unix套接字的健壮方法。 测试结果如下:
$ ./a.out &
[1] 5363
$ ./b.out 123;a=`./b.out`;echo ${a}
123
[1]+ Done ./a.out
参见我的github上的a.c, b.c和a.h。
另一种变通方法(取决于具体情况)可能很有用:创建另一个继承导出变量的bash脚本。这是Keith Thompson回答的一个特例,所有这些缺点。
文件export.bash:
# !/bin/bash
export VAR="HELLO, VARIABLE"
bash
Now:
./export.bash
echo $VAR
执行
set -o allexport
在此之后,您从文件中获取的任何变量都将在您的shell中导出。
source conf-file
当你完成时执行。这将禁用alleexport模式。
set +o allexport
答案是否定的,但对我来说,我做了以下事情
脚本:
myExport
#! \bin\bash
export $1
我的.bashrc文件中的别名:
alias myExport='source myExport'
你仍然可以获取它,但也许这样它更有用,对其他人来说也更有趣。
我不认为这可以做到,但我找到了一个使用别名的变通办法。只有当您将脚本放在scripts目录中时,它才会工作。否则,您的别名将具有无效的名称。
唯一的解决方法是能够在文件中使用同名函数,并且在使用它之前不必费心查找它。将以下代码添加到~/.bashrc文件中:
alias myFunction='unalias myFunction && . myFunction && myFunction "$@"'
您现在可以调用myFunction,而无需首先获取它。