Вопрос по ubuntu, linux – команда экспорта bash

15

Я столкнулся со странной проблемой с моим 64-битным Ubuntu - по команде экспорта.

По сути, я установил виртуальную машину в Ubuntu на моем Win7, и я пытаюсь передать команды из моих окон в мою установку виртуальной машины с помощью специального (предоставляемого клиентом) программного обеспечения.

Итак, на моей виртуальной машине, когда я делаю:

<code>export foo=bar
echo $foo
</code>

все работает как положено.

Однако, когда я делаю то же самое через пользовательское программное обеспечение (которое в основном передает команду linux в виде строки в оболочку bash), я получаю:

<code>export: command not found
</code>

Я попытался посмотреть на оболочку (используя пользовательское программное обеспечение), используя:

<code>echo $SHELL>shell.txt
</code>

и я получаю / bin / bash, который ожидается, и я все еще получаю ошибку export: command not found.

Мне было интересно, видел ли кто-нибудь эту ошибку раньше?

То, что говорит Адам, может быть ключом к вашей проблеме.export это встроенный Bash.echo это двоичный файл, который находится в вашем$PATH ArjunShankar
Что такое «обычай (предоставленный клиентом)»? программного обеспечения? ArjunShankar
О какой пользовательской программе вы говорите? Captain Giraffe
Спасибо вам, ребята, за ваш ответ. «Специальное программное обеспечение» это набор кода Java, который написал мой клиент, и он содержит функцию для запуска команд linux (в основном передает команды в виде строки в оболочку). Я попробую опцию bash -c и обновлю вас, ребята, с результатом. JohnJ
Экспорт не является реальной командой (т. е. не в / bin, / usr / bin и т. д.), она обрабатывается внутренне bash. Вы можете сделать bash -c & export foo = bar; echo \ $ foo & quot; если бы ты хотел ... Adam

Ваш Ответ

8   ответов
0


тогда просто используйте:

setenv path /dir

как это

setenv ORACLE_HOME /data/u01/apps/oracle/11.2.0.3.0
-2

Команда экспорта bash не найдена. & quot; Исправление ошибок открытия терминала & gt; & gt; & gt; & gt; & gt;

откройте терминал и наберите:     root @ somebody: ~ # nano ~ / .bashrc

После загрузки нано:     удалить весь экспортный путь PATH = ............................... линий и нажмите Ctrl + O, чтобы сохранить файл и нажмите Ctrl + E, чтобы выйти.

Теперь ошибка открытия Терминала будет исправлена .........

Это помогает мне, спасибо братан
& amp; Экспорт файлов PATH в конец файла
0

!/bin/sh
на самом деле ты тоже был прав. иногда оболочкой по умолчанию не является bash или sh, использование этой команды устраняет проблему
0

потому, что он пытается выполнить "экспорт" в качестве внешней команды, и это внутренняя оболочка.

0

что программное обеспечение (а не вы сами, поскольку ваш тест показывает только оболочку, используемую по умолчанию для вашего пользователя) использует / bin / bash?

27

export это встроенный Bash,echo это исполняемый файл в вашем$PATH, Такexport Bash интерпретируется как есть, не порождая новый процесс.

Вам нужно получить Bash для интерпретации вашей команды, которую вы можете передать как строку с-c опция:

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"
Я выполнил$ bash -c "export foo=bar", но это говорит$ bash -c "echo \$foo" foo: Undefined variable.
Это не перезаписывает значение в моих centos 5.11, эхо в этой строке все еще печатает старое значение
«ТАКЖЕ» параграф помог мне решить мою проблему. Спасибо
@DavidDunham есть два фрагмента в ответе: первый вызывает экспорт и эхо вone вызов bash и другой в двух отдельных. Соответственно, первый должен «перезаписать» переменная (хотя только временно, а затем вывести новое значение) и вторая не должны. Что вы наблюдали?
0

SHELL это переменная окружения, и поэтому она не самая надежная для того, что вы пытаетесь выяснить. Если ваш инструмент использует оболочку, которая не устанавливает его, он сохранит свое старое значение.

использованиеps выяснить, что на самом деле происходит.

5

setenv PATH $PATH":/home/tmp"

Похожие вопросы