Po wpisaniu %
znaku w terminalu łamie on tę powłokę i każdą nową powłokę otwieram do ponownego uruchomienia:
$ seq 10 | parallel -j50% "echo Hi {}"
-bash: printf: `"': invalid format character
Czy ktoś wie, dlaczego tak jest?
Aby rozszerzyć nieco więcej, jeśli otworzę terminal, a echo "100%"
dzieje się tak:
Last login: Fri Nov 21 08:28:47 on ttys033
~$ echo "100%"
-bash: printf: `"': invalid format character
0; echo "100~$
-bash: printf: `"': invalid format character
7;file://mac-122667.dhcp.fnal.gov/Users/perdue~$
-bash: printf: `"': invalid format character
7;file://mac-122667.dhcp.fnal.gov/Users/perdue~$
-bash: printf: `"': invalid format character
Za każdym razem, gdy naciskam RET
po wprowadzeniu znaku procentu, Terminal miga i wyświetla komunikat o błędzie printf
. Właściwie pracowałem nad tym więcej po opublikowaniu pytania, a jedną rzeczą, którą zrobiłem, było uaktualnienie bash
:
~$ echo $BASH_VERSION
4.3.30(1)-release
To pomaga. Wcześniej był to Bash 2. coś (o ile pamiętam - cokolwiek domyślnego Mountain Lion jest). W tej wersji Basha każde otwarte okno terminalu oprócz tego, w którym umieściłem, %
było w porządku, ale każde nowe okno, które otworzyłem, było również uszkodzone i nic nie mogło przywrócić terminalu poza ponownym uruchomieniem.
Teraz, dzięki Bash 4.3, mogę wpisać polecenie, aby przywrócić monit do normy. Nowe okna terminali również są w porządku.
Ale - nadal nie mogę używać %
poleceń, które wkładam do terminalu. Na szczęście nie muszę często, ale takie rzeczy awk
po prostu nie działają na moim komputerze Mac.
Więc moje $ PS1 to:
~$ echo $PS1
\[\e[0;34m\]\W\[\e[0;31m\]$ \[\e[0m\]
Jeśli na początku wygląda to na mylące, oto kolory, które ustawiam w moim profilu bash:
# colours for use in prompts
RED="\[\e[0;31m\]"
GREEN="\[\e[0;32m\]"
YELLOW="\[\e[0;33m\]"
BLUE="\[\e[0;34m\]"
PURPLE="\[\e[0;35m\]"
CYAN="\[\e[0;36m\]"
export PS1="${BLUE}\W${RED}\$ ${NOCOLOR}"
Jeśli mam echo "100%"
inne konto użytkownika, jest w porządku! Tak wyraźnie, strzelam sobie gdzieś w stopę .bash_profile
. Co jest niedobre, ponieważ w zasadzie lubię moją konfigurację, a przynajmniej tak mi się wydaje, ha!
Jeśli ktoś chce przejrzeć moje pliki kropek, jest teraz w GitHub . (Jestem trochę zawstydzony, żeby im to pokazać - jest tam trochę cruft, haha).
%
znak w dowolnym poleceniu, Terminal zwariuje. Powyższy przykład był właśnie najnowszy, więc to właśnie skopiowałem i wkleiłem. Ale też mnie uderza, gdy go używamawk
.echo "100%"
echo $PS1
ci dajeOdpowiedzi:
Patrząc na
.bash_profile
to, wydaje się to najbardziej podejrzaną linią:Ma wpływ
printf
na historię (która będzie zawierać twoją%
postać).Nie mam pojęcia, co to ma zrobić (zaktualizować tytuł okna za pomocą ostatniego polecenia?), Ale zgaduję, że jeśli to skomentujesz, błąd się zatrzyma.
źródło
Analiza tego rodzaju problemów jest zawsze trudna. Zwykle tworzę nowe konto bez konfiguracji bash, aby zacząć od czystego konta (zakładając, że problem się tam nie pojawia), a następnie pracuję w górę, dodając plik konfiguracyjny według pliku konfiguracyjnego (lub wiersz po wierszu, jeśli to konieczne).
Oprócz zwykłych podejrzanych (
.bash_profile
,.profile
lub.bashrc
) można również zajrzeć do.inputrc
,/etc/profile
a każdy plik pochodzą od jednego z nich.źródło
printf
), ale nie jestem w dobrej pozycji, aby ją teraz przetestować ...