2

В bash я пытаюсь написать скрипт foo , чтобы при запуске $(foo) он менял каталог и запускал скрипт с использованием source . Содержание foo:

echo cd bar
echo "&&"
echo source baz

Когда я запускаю $(foo) , он меняет каталог на "bar", но не запускает source baz . Есть ли способ сделать это?

2 ответа2

2

Вам нужно eval вывод:

eval $(foo)

В противном случае &&(или любой другой подобный элемент языка) обрабатывается так, как если бы он был заключен в кавычки: обычный аргумент для cd .

$ echo $(foo)
cd bar && source baz

Пропустив ведущий echo , он запустит cd с панелью из четырех аргументов bar && source baz , молча отбрасывая все, кроме первого.

0

Вы можете использовать псевдонимы (см. Также: man bash), чтобы делать то, что вы пытаетесь сделать.

alias foo='cd bar && source baz'

при запуске foo изменит каталог на bar и source baz.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .