27

我的 64 位 Ubuntu 在导出命令上遇到了一个奇怪的问题。

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

所以,在我的虚拟机上,当我这样做时:

export foo=bar
echo $foo

一切都按预期工作。

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

export: command not found

我尝试查看外壳(使用自定义软件),使用:

echo $SHELL > shell.txt

我得到了预期的/bin/bash ,但我仍然得到"export: command not found error"

我怎样才能解决这个问题?

4

8 回答 8

37

export是 Bash 内置echo程序,是您的$PATH. 因此export,Bash 会按原样解释,而不会产生新进程。

-c您需要让 Bash 来解释您的命令,您可以使用以下选项将其作为字符串传递:

bash -c "export foo=bar; echo \$foo"

还:

每次调用都bash -c从一个新的环境开始。所以像:

bash -c "export foo=bar"
bash -c "echo \$foo"

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

相反,您需要;在一次调用中链接由分隔的命令bash -c

bash -c "export foo=bar; echo \$foo"
于 2012-04-13T16:47:57.003 回答
5

如果您使用的是C shell -

setenv PATH $PATH":/home/tmp"
于 2017-04-20T10:40:21.687 回答
2

如果您不能使用“导出”命令,那么只需使用:

setenv path /dir

像这样

setenv ORACLE_HOME /data/u01/apps/oracle/11.2.0.3.0
于 2017-08-11T08:34:42.473 回答
1

可能是因为它试图将“导出”作为外部命令执行,而且它是一个内部的 shell。

于 2012-04-11T15:23:51.710 回答
0

您确定该软件(而不是您自己,因为您的测试实际上只显示用户默认使用的 shell)使用/bin/bash吗?

于 2012-04-11T15:23:46.663 回答
0

SHELL是一个环境变量,因此对于您要弄清楚的内容而言,它并不是最可靠的。如果您的工具使用的外壳没有设置它,它将保留其旧值。

用来弄清楚ps到底发生了什么。

于 2012-04-13T16:50:15.333 回答
0

从 Bash 更改为sh脚本使我的脚本工作:

!/bin/sh
于 2013-05-07T10:09:46.577 回答
-3

按照以下步骤删除“找不到 bash 导出命令”。终端打开错误修复>>>>>>

打开终端并输入:

nano ~/.bashrc

加载纳米后:

删除所有 'export PATH = ...' 行并按Ctrl+O保存文件并按Ctrl+E退出。

现在终端打开错误将得到修复......

于 2017-07-22T15:31:24.063 回答