Как использовать исходный код в скрипте bash, чтобы изменить подсказку терминала?

796
qubodup

Мне нужно иметь возможность использовать скрипт в ~ / .local / bin / (который является частью $ PATH), чтобы быстро изменить приглашение.

Желаемого результата можно достичь, запустив в консоли следующее:

 echo PS1='$\ ' > /tmp/ps1 && source /tmp/ps1 && rm /tmp/ps1 

Однако, когда он помещен в скрипт, он больше не повлияет на консоль, в которой он работает.

. .local/bin/bigfont работает, но следует избегать написания пути к сценарию (или написания чего-либо кроме имени сценария).

Есть ли способ сделать это с помощью сценария? Если нет, есть ли простой способ решить эту проблему с помощью C?

Спасибо!

0
Во-первых, вам не нужно писать и исходный файл для изменения переменной среды - вы можете установить PS1, просто выполнив `PS1 = '$ \'`. Вы можете поместить `PS1 = '$ \'` в скрипт и получить его. В качестве альтернативы, вы можете использовать функцию вместо скрипта, которая не должна быть получена из источника, но будет выполняться в текущей среде, чтобы вы могли устанавливать переменные среды, такие как PS1. Вы не можете сделать это в сценарии, не используя его, потому что сценарий запускается как дочерний процесс вашей оболочки, а дочерние процессы не могут влиять на среду их родителя. garyjohn 8 лет назад 1

2 ответа на вопрос

0
qubodup

There is a compromise, which will make it appear as if you are using a script.

Write a Bash function:

function miniprompt { PS1='$ ' ~/.local/bin/somescript # or just somescript if it's in $PATH } 

To ensure that the function is always available, put it into ~/.bashrc and ~/.bash_profile (or just ~/.bashrc if it gets loaded by ~/.bash_profile anyway).

garyjohn made it clear that the question contains a wrong assumption that source must be used and clarified that one could instead set PS1='$ ' directly. Thanks!

0
Vinayak Gadkari
function myprompt { export PS1=<set PS1 appropriately> }  alias setprompt="PROMPT_COMMAND='myprompt'" 

Запуск setprompt должен установить ваше приглашение.

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