Portál AbcLinuxu, 30. dubna 2025 08:00
PS1="\h@\u \w \$ " # bude vypadat takto: dave@amd64 /tmp $
je prohozené \h a \u.
\[\033[01;31m\]${?/#0/}\[\033[01;36m\]Hlavny trik je
${?/#0/}
, ktory zabezpeci vypis/nevypis podla navratovej hodnoty aj bez spustenia procesu.
$ echo $$ `if [[ 0 -eq 0 ]] ; then echo $$; fi` 10184 10184
$ echo $$ `ll /proc/self` 7651 lrwxrwxrwx 1 root root 64 2010-03-17 20:15 /proc/self -> 4123/
echo $$ echo `echo $$` echo `ls; echo $$`To vyzera, ze ani nerozlisuje, ci treba pustat novy proces alebo si vystaci sam, ale skutocne to vykonava v kontexte jedneho procesu
$ echo -e "$$ \n`ls -l /proc/self; echo $$`" 5287 lrwxrwxrwx 1 root root 64 2010-03-18 08:57 /proc/self -> 10210 5287
$$ Expands to the process ID of the shell. In a () subshell, it expands to the process ID of the current shell, not the subshell.Ked som skusil nieco ako grep napisane v cistom bashi, tak sa pid meni:
$ echo $$ 6096 $ echo `while read l; do [[ "$l" == Pid:* ]] && echo "$l"; done </proc/self/status` Pid: 7667 $ echo `while read l; do [[ "$l" == Pid:* ]] && echo "$l"; done </proc/self/status` Pid: 7668Trocha to vidno na premennej BASH_SUBSHELL
$ echo $BASH_SUBSHELL 0 $ echo `$ echo $BASH_SUBSHELL` 1
echo $$ `echo \$\$` 18053 18053 echo $$; (eval echo '$$') 18053 18053 echo $$ ` (eval echo '\$\$') ` 18053 18053Pokud chcete definitivní odpověď, zkuste strace
it expands to the process ID of the current shell, not the subshell.aj pozdna expanzia vracia pid nadradeneho shellu. Nesfalsovanu hodnotu som ziskal z /proc/self/status. Ked som sa externym strace pripojil na bash a spustil
echo `echo \$\$`
, tak vo vypise syscallov je pipe
a hned za nim clone
. Takze proces sa vytvara.
Já kdysi používal něco takového, ale když se na to dívám zpětně, asi bych už takovou šílenost nikdy znovu nechtěl
jo tak tuhle zrudu jsem pouzival taky
Hehe, tak to je nás viac (resp. bolo)
Ja to mam takto a staci mi :
[ martin@~/workspace/ ]:16:25:^_^:
> qwert
bash: qwert: command not found
[ martin@~/workspace/ ]:16:39:-_-:
>
$ mc bash: mc: command not found
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.