Почему & ldquo; cd .. & rdquo; не работает в этом случае, если

Вот пример. Создание пользовательского меню

Вы просто следуете этим инструкциям и переименовываете разделы в X / Lubuntu.

2
задан 23 February 2012 в 02:19

2 ответа

Я думаю, что это связано с тем, как вы запускаете скрипт.

Если вы это сделаете:

sh ./script.sh

Или

./script.sh

Тогда это вызывает новую оболочку, запускает скрипт, а затем возвращает вас к текущему. Итак, cd выполняется в новой оболочке, а ваш текущий нетронутый.

Попробуйте это вместо:

. ./script.sh

Что запустит script.sh в вашей текущей оболочке, а вы «Я буду держать результаты после завершения.

11
ответ дан 25 May 2018 в 16:43
  • 1
    @UAdapter: чтобы убедиться, что проблема заключается в том, как запустить скрипт, а не с помощью скрипта, попробуйте распечатать текущий рабочий каталог из сценария до и после выполнения каждой команды cd. – binW 18 November 2011 в 22:59

Функция будет более подходящей для такой команды. Например,

back() {
    if [[ $PWD = *database ]]; then
        cd ../../
    fi
}

Поместите его в ~ / .bashrc, чтобы эта новая команда back была доступна в новых интерактивных сессиях bash.

1
ответ дан 25 May 2018 в 16:43

Другие вопросы по тегам:

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