Bash команда экспорта

У меня возникла странная проблема с моим 64-битным Ubuntu - в команде export.

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

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

export foo=bar
echo $foo

все работает так, как ожидалось.

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

export: command not found

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

echo $SHELL>shell.txt

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

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

Ответ 1

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"

Ответ 2

Если вы используете C shell -

setenv PATH $PATH":/home/tmp"

Ответ 3

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

Ответ 4

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

Ответ 5

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

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

Ответ 6

Если вы не используете "export" cmd
то просто используйте:

setenv path /dir

как это

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

Ответ 7

измените с bash на sh scripting, сделайте мою работу script.

!/Бен/ш

Ответ 8

Выполните следующие действия для удаления команды bash export not found. " Исправление ошибок при открытии терминала → → →

открыть терминал и ввести:   root @кто-то: ~ # nano ~/.bashrc

После загрузки nano:   удалите все строки "export PATH =..........................." и нажмите ctrl + o, чтобы сохранить файл, и нажмите ctrl + e, чтобы выход.

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