Установите переменную среды оболочки, не используя оболочку встроенная команда

Если это происходит, Вы несомненно вставили символ новой строки сами. cat связывает их, точно так же, как это всегда делает. Можно протестировать это при помощи cat сначала записать и затем конкатенировать:

cat > file1
# write something
# hit Ctrl+D twice to end file
# repeat steps with file2
cat file1 file2
2
15.07.2013, 14:58
2 ответа

Нет. Только оболочка может изменить свою собственную среду; set и export должен всегда создаваться-ins.

Это также верно для cd, alias и так далее.

Лучшее, которое я могу предложить, должно повторно реализовать Вашу обертку с помощью функции оболочки. Или это или сценарий оболочки, который Вы "получаете". Так или иначе обертка, которая работает в оболочке, может сделать эти вещи больше беспрепятственно.

3
27.01.2020, 22:01

Возможное обходное решение для Вашей исходной проблемы было бы оберткой для Вашей обертки (изображение Xzibit, не включенное):

#!/bin/bash

command="$1"
temp=$(mktemp -d)

> "$temp/$command"
chmod a+x "$temp/$command"

PATH+=:$temp

your_wrapper

rm -r "$temp"

Это создает пустой исполняемый файл, который пройдет тесты Вашей обертки, не переопределяя команду, которую Вы на самом деле хотите выполнить (встроенное).

1
27.01.2020, 22:01

Теги

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