Stack Exchange Network

Stack Exchange network consists of 175 Q&A communities including Stack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.

Visit Stack Exchange

Questions tagged [dash]

The Dash shell, a POSIX-compliant derivative of the Almquist shell used as /bin/sh in Debian, Ubuntu and other Linux distributions

6
votes
3answers
391 views

Shell builtin `printf` line limit?

The /usr/bin/printf util argument list length is limited to the shell's maximum command line length, (i.e. getconf ARG_MAX, on my system that'd be 2097152); example: # try using a list that's way too ...
1
vote
1answer
57 views

Exit status of chained commands

I want to run a potentially invalid command in a variable cmd. I can't afford to have it just fail me and retrieve the exit status. What I can try to do is pipe it to : and then I'll have a successful ...
0
votes
1answer
20 views

Why can't echo and printf output variables that have only whitespace characters? [duplicate]

var1=$(printf "\n\x0A\n") var2=$(printf "\na\nb\nc") Using Android Terminal, the output of echo -e "$var1" (same for echo and printf) iss nothing, not even the 3 new lines. But echo -e "$var2" or ...
2
votes
1answer
52 views

Understanding process substitution in dash

Someone asked how to pass the output of two commands as files to another command and they got the answer below. ( cmd1 | ( cmd2 | ( main_command /dev/fd/3 /dev/fd/4 ) 4<&0 ) 3<&0 ) I ...
3
votes
1answer
166 views

dash: why am I getting the error “Syntax error: EOF in backquote substitution” when my script doesn't even contain a backquote?

#!/bin/sh -- for set_trap_sig in HUP INT QUIT ALRM TERM; do trap -- ' trap -- - '"${set_trap_sig:?}"' EXIT || exit "$?" kill -s '"${set_trap_sig:?}"' -- "$$" || exit "$?"' "$...
1
vote
1answer
27 views

How to not split words [duplicate]

I have a list of commands in a file called cmds, one command per line. I want to grab the last command, set it in a variable last_command and run it later. with $last_command or "$last_command", or ...
2
votes
1answer
109 views

Using diff to compare the output of two commands

How does one go about using diff to compare the output of two commands? I know how to use it to compare the contents of a file filename1 with the output of a command cmd2: cmd | diff filename - How ...
1
vote
2answers
57 views

Escaping spaces in dash [duplicate]

I want to do something like this. $ touch a\ b $ cmd=cat\ a\ b $ echo $cmd cat a b $cmd cat: a: No such file or directory cat: b: No such file or directory There are problems with the spaces in the ...
5
votes
1answer
61 views

dash maximum variable length under systemd

I have a shell script that uses a single variable as an associative array (one KEY=VALUE per line). Throughout the execution of the script, the variable is manipulated to add, remove or modify ...
0
votes
0answers
39 views

Accessing command history in dash

When I try to run history in dash, I get an error message. This is expected as far as I can tell. When I run fc I too get an error message like "dash fc: not found". So how do I access the command ...
0
votes
0answers
41 views

History not working in a Dash i-shell (with Bash as a parent process)

My terminal initializes with Bash. I run dash and enter an interactive Dash shell. I run a few random commands and try to run history only for it to fail. I check if history is enabled and it ...
2
votes
2answers
29 views

How do ranges in dash work?

I'm trying to figure out how to rush the following bash script in dash. for x in {1..5} do for y in {a..c} do echo $HOME$x$y done done Dash does not support brace expansion and I don'...
4
votes
3answers
379 views

How to escape the null character in here-document?(bash and/or dash)

I want to perform shuf --zero-terminated on multi-line strings with here-document.
5
votes
1answer
822 views

What's going on with this dash '-' thing?

I was trying to export the Python environment requirements and this is what I intended to do: conda list -e > requirements.txt However I mistakenly typed this instead: conda list -e -> ...
2
votes
1answer
38 views

Dash - how to escape strange path characters

If the follow strange directory is created: a"␤ b" In bash or zsh one can do: cd a$'\n'b or cd 'a'$'\n''b' What is the equivalent for dash?
7
votes
4answers
568 views

Portable check empty directory

With Bash and Dash, you can check for an empty directory using just the shell (ignore dotfiles to keep things simple): set * if [ -e "$1" ] then echo 'not empty' else echo 'empty' fi However I ...
1
vote
1answer
125 views

Can't change shell from dash to bash on Linux Mint VM [closed]

Just installed a virtual machine via virtualbox yesterday and I'm having trouble switching the shell from dash to bash. I've tried chsh as well as modifying the file directly, but it still defaults to ...
0
votes
1answer
60 views

Bash command “reset” — dash (sh) equivalent?

When the fonts get messed up in dash (jackpal.androidterm), how do I reset that one? When printing contents of binary files, special characters can mess up the terminal character set. How can this be ...
0
votes
1answer
73 views

some sed commands fail when in background

Some sed commands seem to fail when run in background. Minimal example below. One sed command appends append after a block of lines that begin with a star *. The other just substitutes a word. The ...
6
votes
2answers
69 views

Is it normal that bash stat() and access() much, before commands?

Running strace on the bash shell that is instructed to run mkdir provided this output which shows lots of stats prior to execve the actual mkdir binary: BASH$> strace -f sh -c "bash -c \"mkdir /...
1
vote
2answers
116 views

How to check left command's exit status in pipe “left | right” in dash when left command produces large output

It seems that the variable "PIPESTATUS" is unavailable in dash. Simple separate execution is not working because the left command produces very large output. I used a fifo to do this task: #!/bin/...
0
votes
1answer
126 views

Is there an invoked file for dash and sh as non login shells in /etc directory?

/etc/profile can be invoked by sh and dash inside an interactive login mode. Is there any file in /etc directory to be invoked when they are in an interactive non-login mode?
1
vote
1answer
127 views

Using the 'a' and 'c' options with the 'dash' command in Unix [closed]

What do the options 'a' and 'c' do when there are used with the command 'dash'? I was unable to understand what that command actually does! I have tried reading the man page but didn't exactly ...
1
vote
4answers
478 views

/bin/sh: read variable from pipe [duplicate]

In bash or zsh, I can use following syntax to read from pipe into variables: echo AAA BBB | read X Y ; echo $X which will print AAA Why does the same not work in /bin/sh? I am using /bin/sh -> /...
1
vote
1answer
65 views

How can I set PATH in the `dash`(or bash) shell so that it doesn't search any dirs ? because empty PATH searches current directory

In Dash if I set the PATH to an empty string, it searches in current directory: $ export PATH= $ echo $PATH $ emptyexe $ /usr/bin/ls emptyexe emptyexe $ pwd /home/ctor $ cd .. $ emptyexe dash: 36: ...
0
votes
1answer
39 views

Where is '/?' parameter expansion documented?

I came across this weird parameter expansion for bash/dash which I don't find any reference for. What is this sort of expansion called? Where is it documented? $ /??? bash: /bin: Is a directory $ /???...
1
vote
0answers
135 views

Dash escaping hyphen?

I am using Homebrews dash package on MacOS to print a text. echo "Hello World - Test" But I am receiving Hello World \- Test What am I doing wrong?
0
votes
1answer
67 views

POSIX-ly correct way to isolate files with newlines via find?

There's a question How to find files that contain newline in filename?, where the accepted answer handles isolating files with newlines via ANSI-C quoting, and that works fine in ksh and bash, but how ...
7
votes
1answer
498 views

Is parameter expansion on $@ not supported by the sh shell?

I posted an answer to a question on AU, and I found that parameter expansion on $@ doesn't work with the sh shell: <infile xargs -d'\n' sh -c 'echo "${@%%/*}"' _ but it works fine in bash. Is ...
1
vote
1answer
663 views

BASH/DASH: What is the best way to pass array to function?

I have this array: PARAMETERS_OF_COMPONENTS[1]="component1" PARAMETERS_OF_COMPONENTS[2]="component21 component22 component23" PARAMETERS_OF_COMPONENTS[3]="component3" PARAMETERS_OF_COMPONENTS[4]="...
2
votes
1answer
188 views

Dash “-nt” behavior

The use case I can think of for -nt, would be updating a file if it is too old, or if it does not exist. Bash handles this just fine: $ bash -c 'touch 2.txt; sleep 1; touch 1.txt; [ 1.txt -nt 2.txt ];...
1
vote
1answer
248 views

How do I reliably convert /proc/pid/environ to arguments for the env command?

How do I reliable convert /proc/pid/environ to argument for the env command? IFS=$'\n' ; env -i $(xargs -0n1 -a /proc/$$/environ) only works when all environment variables do not have the newline ...
7
votes
2answers
965 views

Test if variable contains newline (POSIX)

I know that some shells accept this kind of test: t() { [[ $var == *$'\n'* ]] && res=yes || res=no printf '%s ' "$res"; } var='ab cd' t var='abcd' t echo on execution: $ bash ./...
3
votes
1answer
121 views

Does fd number of various shells fixed?

Let's say: xb@dnxb:/tmp$ echo 'ls -l /proc/$$/fd | grep a.sh' > a.sh; \ > while IFS='' read -r f; do \ > echo "$f"; "$f" a.sh; \ > done < <(tail -n +2 /etc/shells) /bin/sh lr-x------...
6
votes
1answer
474 views

Why does CDPATH not work as documented in the manuals?

The Bourne Again shell manual says, of cd dir: […] each directory name in CDPATH is searched for dir. […] If dir begins with a slash (/), then CDPATH is not used. The Z shell manual ...
9
votes
4answers
3k views

Split string on colon in /bin/sh

My dash script takes a parameter in the form of hostname:port, i.e.: myhost:1234 Whereas port is optional, i.e.: myhost I need to read the host and port into separate variables. In the first case, ...
1
vote
1answer
84 views

How to find out the version number of `dash` without resorting to package management systems?

I have been using bash most of the time and has just started playing with other shells. I started with dash and tries to find out its version number but the usual method like -v or $version does not ...
8
votes
1answer
394 views

Why does exiting with a stored returncode of a nested command result in different returncodes in Dash and Bash?

Running bash -c 'bash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;' results in test1 being printed to console and echo $? to print 1 which in my ...
4
votes
1answer
3k views

bash command substitution with redirection: bad file descriptor

the following command works in dash but fails in bash with "Bad file descriptor". $ dash -c 'out=$(echo "to fd3" >&3; echo "to stdout") 3>&1; echo "out: $out"' to fd3 out: to stdout $ ...
0
votes
1answer
447 views

Why is using git with && failing when inside a .sh but not from the command line?

I have a script (called update_content.sh) that is supposed to run 3 consecutive git commands and the first version looked like this: #!/bin/sh git fetch --all && git reset --hard && ...
1
vote
3answers
567 views

Error cleanup for shell scripts

What's the best way to include error cleanup logic for shell scripts? Specifically, I have a script that does something like this: mount a x mount b y setup_thing mount c z do_something umount z ...
8
votes
2answers
1k views

How does bash file redirection to standard in differ from shell (`sh`) on Linux?

I wrote a script which switches users while running, and executed it using file redirection to standard in. So user-switch.sh is... #!/bin/bash whoami sudo su -l root whoami And running it with ...
0
votes
3answers
127 views

Why does read -r eat text? [duplicate]

I have a names.txt file with with the top line of text being 51 Pipe-line\Closed3\00001011_-_Portfolio\UW\Old\NID50_Future_022814.xlsx I would like to write new filenames replacing \ with / I wrote ...
0
votes
1answer
203 views

Going through 2D array

I have an expression ls -l `find . -type f` | tr -s [:space:] | cut -d ' ' -f 5 | sort | uniq -c | tr -s [:space:] | sort -k 2n which creates a 2D array like: xx yy xx yy xx yy where xx is ...
5
votes
1answer
249 views

dash: How to capture output of trap (invoked w/o arguments)?

The section on trap in the dash manpage states the following: trap without any arguments cause it to write a list of signals and their associated action to the standard output in a format that is ...
4
votes
1answer
158 views

dash: List declared functions

What is the dash equivalent to bash's: compgen -A function which lists the names of the declared functions.
6
votes
2answers
334 views

dash: Pipe STDIN to multiple commands and their output to STDOUT in defined order

At first I thought this answer was the solution, but now I think I need a temporary file as buffer. This works unreliably: #!/bin/sh echo 'OK' | { { tee /dev/fd/3 | head --bytes=1 >&...
6
votes
1answer
3k views

Assign file name to a variable using pathname expansion

Is there a reliable way to assign a file name to a variable taking advantage of pathname expansion? This works but looks kind of dodgy: the_file="$(echo ~/downloads/stack-*-linux-x86_64-static.tar....
1
vote
3answers
4k views

Print variable with backslashes in dash

My shell is dash. My problem is the following: # A="abc\nde fg" # printf "$A" abc de fg# # B="abc\\nde fg" # printf "$B" abc de fg# # C="abc\\\nde fg" # printf "$C" abc\nde fg# The string ...
0
votes
2answers
1k views

Setting umask for su user command

In my system I set the umask for the user root to 0077 and for the non-root users to 0027 (via /etc/profile). This is working for the normal terminal logins. But if I login as root and change user ...