我在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使用“导出”命令,那么只需使用:
\nsetenv path /dir\nRun Code Online (Sandbox Code Playgroud)\n像这样
\nsetenv ORACLE_HOME /data/u01/apps/oracle/11.2.0.3.0\nRun Code Online (Sandbox Code Playgroud)\n