Raspberry pi - терминал, подсказака

Тема в разделе "Raspberry Pi", создана пользователем Pitekantrop, 2 мар 2022.

  1. Pitekantrop

    Pitekantrop Нерд

    Как в окне терминала через запуск скрипта можно изменить подсказку - чтобы она указывала на нужную папку?
    Поробовал вот так:
    https://ru.stackoverflow.com/questi...е-linux-не-отображается-путь-до-текущей-папки

    Вид посказки изменился, но на текущую папку не показывает Скрипт вот такой:
    Код (Text):
    #!/bin/bash
    cd /etc
    pwd
    ls
     
    но подсказака на /etc не показывает
     
    Последнее редактирование: 2 мар 2022
  2. Igor68

    Igor68 Гуру

    Не понятно, а что надо подсказывать? Вы перешли в нужную директорию, определили текущую директорию, вывели список. А что надо-то?
     
  3. Igor68

    Igor68 Гуру

    перейдите в BASH - запустите. Я не так понял?
     
  4. Pitekantrop

    Pitekantrop Нерд

    Упрощенно задача такая:
    1. Нахожусь в папке /home (в терминале попал в эту папку через команды cd к примеру)
    2. в терминале подсказка - /home
    3. в папке /home есть скрипт, в котором через команды cd перехожу в /etc и печатаю содержание через ls.
    4. Запускаю скрипт. Печатается содержание содержание /etc.

    Нужно чтобы и подсказка терминала стала /etc. Т.е. как сменить текущий указатель терминала на другую папку через скрипт.
    Вроде везде написано поправить PS1 в файле .bashrc

    Или я не совсем правильно понимаю?
     
  5. ZAZ-965

    ZAZ-965 Гуру

    Попробуйте запускать через команду source, чтобы ваш скрипт выполнялся в текущей командной сессии
    Код (Bash):
    source ./my_script.sh
     
    Igor68 нравится это.
  6. Pitekantrop

    Pitekantrop Нерд

    Шикарно! Все сразу заработало. Спасибо огромное!:)
    p.s.
    ....эхма....сколько еще чудных тайн линукса скрыто от меня, новичка в этом деле...пойду учить матчасть:)
     
  7. b707

    b707 Гуру

    Выражайтесь, пожалуйста, яснее... Вам нужно не "сменить подсказку", а сменить текущий каталог на тот, в котором выполнялся скрипт.
     
  8. Pitekantrop

    Pitekantrop Нерд

    Может быть вы правы. Но мне показалось что при выполнении скрипта вот с таким кодом:
    Код (Text):
    #!/bin/bash
    cd /etc
    pwd
    ls
    происходило изменение текущего каталога на /etc и там выполнялись команды pwd и ls. При этом сам скрипт находился в /home.
    Поэтому мне как-бы не нужно было "сменить текущий каталог на тот, в котором выполнялся скрипт".
    Собственно после поста ZAZ-965 я нарыл вот это:
    Код (Text):
     source позволяет выполнить скрипт в текущем процессе оболочки bash.
    По умолчанию для выполнения каждого скрипта запускается отдельная оболочка bash,
    хранящая все его переменные и функции. После завершения скрипта всё это удаляется
    вместе с оболочкой.
    Но звание у вас выше, поэтому спорить с вами не хочу....:)
     
  9. b707

    b707 Гуру

    то что вы цитируете - подтверждает мои слова.:
    Код (Text):
    По умолчанию для выполнения каждого скрипта запускается отдельная оболочка bash,
    хранящая все его переменные и функции. После завершения скрипта всё это удаляется
    вместе с оболочкой.
    то есть ваш скрипт выполняется в отдельной оболочке и то, что этот скрипт делает - никак не влияет на ваши текушие переменные, в том числе на текущий каталог. Скрипт переходит в /etc. но это происходит в его оболочке, в вашей каталог не меняется.Поэтому после завершения скрипта вы остаетесь в /home, где и были.
    Ваша задача была в том, чтобы исполнение скрипта меняла параметры вашей оболочки, а не отдельной.
     
  10. Pitekantrop

    Pitekantrop Нерд

    Именно так.
    От незнания видимо не смог правильно сформулировать. Вы правы.