У своєму запитанні ви маєте на увазі, що ви взагалі не цитуєте рядок; це явно неправильно, оскільки тоді пробіл відокремить призначення аргументу "PS1 = [\ u @ \ h" від команди "\ W] \ $". Зверніть увагу, що кожен персонаж важливий.
У будь-якому випадку, ви, ймовірно, робите, це використовувати подвійні лапки ("), а не одиничні ("). Вони поводяться дуже по-різному, коли справа доходить до оболонки, що інтерпретує те, що ви ввели. За допомогою подвійних лапок вона намагатиметься робити розумні речі з Для цього завдання, оскільки \ n, \ h і \ W немає нічого особливого, вони залишаються недоторканими; квадратні дужки можуть мати особливі значення в різних місцях, але не в цьому випадку, тож вони також залишаються на місці, але оскільки а $
має різноманітні значення, усі вони особливі, \$
послідовність інтерпретується як "ігноруйте особливість знака долара і просто залиште його там", і цю послідовність замінюють на знаком єдиного долара без подальшого розбору. Результат всього цього призначенийPS1
, а оскільки є буквальний знак долара, а не магічна \$
послідовність, коли оболонка будує фактичну підказку, ви просто отримуєте знак долара, а не характер, залежний від ефективного користувача. Справжній розбір трохи складніший, але в цьому суть цього конкретного прикладу.
Що ви ввели: PS1="[\u@\h \W]\$ "
Що призначено оболонці: PS1 <- "[\u@\h \W]$ "
Що ви хотіли: PS1 <- "[\u@\h \W]\$ "
що слід ввести:PS1='[\u@\h \W]\$ '
Що слід зробити далі: прочитайте щось подібне до цього підручника, щоб дізнатися більше про цитування оболонок.
PS1=[\u@\h \W]\$
повертає-bash: W]$: command not found
.