bash export命令

Joh*_*hnJ 16 linux ubuntu

我在64位Ubuntu上遇到了一个奇怪的问题 - 在export命令上.

基本上,我在Win7上的Ubuntu上安装了VM,我正在尝试使用自定义(由客户端提供)软件将命令从我的窗口传递到我的VM安装.

所以,在我的VM上,当我这样做时:

export foo=bar
echo $foo
Run Code Online (Sandbox Code Playgroud)

一切都按预期工作.

但是,当我通过自定义软件(基本上将linux命令作为字符串传递给bash shell)时,我得到:

export: command not found
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下方法查看shell(使用自定义软件):

echo $SHELL>shell.txt
Run Code Online (Sandbox Code Playgroud)

我得到/ bin/bash这是预期的,我仍然得到导出:命令未找到错误.

我想知道以前是否有人见过这个错误?

Arj*_*kar 28

export是一个Bash内置,echo是你的可执行文件$PATH.所以exportBash按原样解释,而不会产生新的进程.

您需要让Bash解释您的命令,您可以将该命令作为带有-c选项的字符串传递:

bash -c "export foo=bar; echo \$foo"
Run Code Online (Sandbox Code Playgroud)

也:

每次调用都bash -c以新鲜的环境开始.所以类似于:

bash -c "export foo=bar"
bash -c "echo \$foo"
Run Code Online (Sandbox Code Playgroud)

不管用.第二次调用不记得了foo.

相反,您需要链接;在单个调用中分隔的命令bash -c:

bash -c "export foo=bar; echo \$foo"
Run Code Online (Sandbox Code Playgroud)


小智 6

如果您可以\xe2\x80\x99t使用“导出”命令,那么只需使用:

\n
setenv path /dir\n
Run Code Online (Sandbox Code Playgroud)\n

像这样

\n
setenv ORACLE_HOME /data/u01/apps/oracle/11.2.0.3.0\n
Run Code Online (Sandbox Code Playgroud)\n


小智 5

如果你使用C shell -

setenv PATH $PATH":/home/tmp"
Run Code Online (Sandbox Code Playgroud)