2012-03-06 3 views
1

Я настраивая свою Баш подсказку (я использую Iterm на OS X Lion), и пытался что-то вроде:Bash стремительные не признающие переменные

PS1='\n[\u]-> ' 

Просто для простоты, но после перезагрузки моего ~/.bash_profile, мой запрос теперь говорит:

\n[\u]-> 

и не то, что я ожидаю (новая строка, за которой следует мое имя пользователя).

Любые идеи?

+1

Попробуйте 'chsh', может работать и на Mac. – 0xC0000022L

ответ

2

Как вызывается оболочка? Если это sh или, возможно, другие способы, это не будет интерпретироваться. Попробуйте echo $0

+1

Как насчет 'echo $ SHELL'? ;) ... ладно, ладно, я понял ... '$ 0' для ленивых людей. – 0xC0000022L

+1

Я играл с zsh в эти выходные, но я бы хотел просто использовать bash. Думаю, это моя проблема. Когда я запускал 'echo $ 0', он возвращал' -zsh'. – Connor

+0

@STATUS_ACCESS_DENIED На самом деле, я тестировал, и они дали разные результаты. '$ 0' был' sh', '$ SHELL' был'/bin/bash'. – Kevin

-1

Попробуйте заменить одиночные кавычки двойными кавычками, то есть PS1="\n[\u]-> ".

+1

Нет, как только переменная установлена, это не имеет значения, и экраны не интерпретируются до тех пор, пока подсказка не будет написана. – Kevin

1

Обратите внимание на одинарные кавычки в вашем приглашении? Bash syntax рассматривает одиночные и двойные кавычки по-разному. Используйте двойные кавычки, чтобы оболочка могла расширять специальные символы.

Кроме того, у вас есть promptvars комплект?

+0

Не совсем в этом случае. Это не классические переменные, это «специальные» переменные. Я думал, что это так, пока я не попробовал. – 0xC0000022L

+1

Нет, переменная устанавливается одинаковой с одиночной или двойной, и она не интерпретируется до тех пор, пока она не будет напечатана. – Kevin

+0

@Kevin Я знаю, что интерпретация происходит во время печати. Но [в соответствии с этим] (http://ss64.com/bash/syntax-prompt.html) и страницей руководства BASH, подсказка * делает * просматривает расширение цитаты. –

Смежные вопросы