Die Dash-Shell, eine POSIX-kompatible Ableitung der Almquist-Shell, die in Debian, Ubuntu und anderen Linux-Distributionen als / bin / sh verwendet wird
Ich war immer der Meinung, dass der einzige Vorteil der Verwendung von dash anstelle von bash darin besteht, dass dash kleiner ist und daher viele Instanzen von dash beim Booten schneller gestartet werden. Aber ich habe einige Nachforschungen angestellt und festgestellt, dass einige Leute all ihre Skripte migrieren, um in …
Mir ist aufgefallen, dass im Grunde kein System, mit dem ich jemals gearbeitet habe /bin/sh, eine echte ausführbare Datei ist. Es ist immer ein Symlink zu dash, bashim POSIX-Modus oder ähnlichem. Warum? Was sind die Nachteile der Verwendung des wahren Originals /bin/sh? (Geschwindigkeit? Lizenzierung?)
In bashkann ich Process Substitution verwenden und die Ausgabe eines Prozesses so behandeln, als wäre es eine auf der Festplatte gespeicherte Datei: $ echo <(ls) /dev/fd/63 $ ls -lAhF <(ls) lr-x------ 1 root root 64 Sep 17 12:55 /dev/fd/63 -> pipe:[1652825] Leider wird die Prozessersetzung in nicht unterstützt dash. Was …
Was ist der Unterschied zwischen diesen beiden Beispielen in der POSIX-Shell, wenn eine Variable vor / nach dem Inkrementieren erstellt wird? Sie scheinen die gleichen Konsequenzen zu haben, würden aber unterschiedlich eingesetzt? Wann würden Sie eins dem anderen vorziehen? X=$((X+1)) : $((X=X+1))
Mein $ PATH sieht so aus: /home/torbjorr/deployed/vector/x86_64-GNU%2fLinux:/home/torbjorr/deployed/typewriter/x86_64-GNU%2fLinux:/home/torbjorr/deployed/mustudio/x86_64-GNU%2fLinux:/home/torbjorr/deployed/mathext/x86_64-GNU%2fLinux:/home/torbjorr/deployed/doxymax/x86_64-GNU%2fLinux:/home/torbjorr/deployed/c2tex/x86_64-GNU%2fLinux:/home/torbjorr/deployed/x86_64-GNU%2fLinux/wand:/home/torbjorr/deployed/x86_64-GNU%2fLinux/spellesc:/home/torbjorr/deployed/x86_64-GNU%2fLinux/projinit:/home/torbjorr/deployed/x86_64-GNU%2fLinux/herbs:/home/torbjorr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games In der bash kann ich problemlos den in befindlichen Zauberstab aufrufen /home/torbjorr/deployed/x86_64-GNU%2fLinux/wand mögen $ wand (i) Mål från "main.cpp" har registrerats (i) Skapar katalog "__wand_targets_dbg" (i) Kör g++ "main.cpp" -fpic -L"/home/torbjorr/deployed" -g -Wall -std=c++11 -I"/home/torbjorr/deployed" -o "__wand_targets_dbg/cb-template Im Bourneshell-Kompatibilitätsmodus kann der Zauberstab jedoch …
Ich wollte wissen, ob für dash, ash und sh geschriebene Skripte zu 100% kompatibel sind. Gibt es zusätzliche Funktionen zum Bindestrich oder Aschen oder zum Ändern der Syntax? Nach allem, was ich gehört habe, ist Asche ein direkter Nachkomme von sh.
In bash: $ type : : is a shell builtin $ type true true is a shell builtin Sieht so aus, als wären sie gleich, aber sie geben nicht die gleiche Systemspur: $ strace : strace: :: command not found $ strace true execve("/bin/true", ["true"], [/* 82 vars */]) = …
Im Bindestrich scheinen Funktionen und Variablen in separaten Namespaces zu leben: fn(){ fn="hello world" } fn; echo "The value is $fn!" #prints: The value is hello world! fn; echo "The value is $fn!" #prints: The value is hello world! #the fn variable doesn't conflict with the fn function Handelt es …
Was wäre der beste Weg, um zu überprüfen, ob $ 1 eine Ganzzahl in / bin / dash ist? In Bash könnte ich tun: [[ $1 =~ ^([0-9]+)$ ]] Dies scheint jedoch nicht POSIX-konform zu sein, und Dash unterstützt dies nicht
Mein dashSkript verwendet einen Parameter in Form von hostname:port: myhost:1234 Während der Port optional ist, dh: myhost Ich muss den Host und den Port in separate Variablen lesen. Im ersten Fall kann ich tun: HOST=${1%%:*} PORT=${1##*:} Dies funktioniert jedoch nicht im zweiten Fall, wenn der Port weggelassen wurde. echo ${1##*:}Gibt …
Ich schrieb ein Skript , das Benutzer schaltet beim Laufen, und ausgeführt es Dateiumleitung zu Standard zu verwenden. So user-switch.shist ... #!/bin/bash whoami sudo su -l root whoami Und bashwenn ich es mit laufe, bekomme ich das Verhalten, das ich erwarte $ bash < user-switch.sh vagrant root Wenn ich das …
In Bash können Sie alle zukünftigen Standardausgaben des aktuell ausgeführten Skripts umleiten . Zum Beispiel mit diesem Skript, exec > >(logger -t my-awesome-script) echo 1 echo 2 echo 3 Dies wird in Syslog enden: Oct 26 01:03:16 mybox my-awesome-script[72754]: 1 Oct 26 01:03:16 mybox my-awesome-script[72754]: 2 Oct 26 01:03:16 mybox …
Ich weiß, dass einige Muscheln diese Art von Test akzeptieren: t() { [[ $var == *$'\n'* ]] && res=yes || res=no printf '%s ' "$res"; } var='ab cd' t var='abcd' t echo bei der Ausführung: $ bash ./script yes no Was ist das POSIX (Dash) Arbeitsäquivalent Ist das Folgende eine …
Laufen bash -c 'bash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;' führt dazu, test1dass auf der Konsole gedruckt wird und echo $?gedruckt wird, 1was meines Erachtens korrekt ist, da der Befehl mit dem [b/d]ash -czurückkehren sollte, was das Innere zurückgegeben hat, während dash …
Vom Unterschied zwischen Bash und Sh : AB zur Frage: Wenn Sie /bin/sheinen Link zu bash haben, verhält sich bash beim Aufruf nicht so /bin/shwie beim Aufruf als /bin/bash. Wenn es als aufgerufen shwird, beschränkt es sich hauptsächlich auf POSIX-Konformität sowie eine begrenzte Anzahl von Erweiterungen. Bedeutet das, dass jedes …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.