2.068.0 std.process.executeShell how to set the shell?

albatroz via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Sep 1 14:55:28 PDT 2015


Hi, since the upgrade to the latest version the function 
executeShell (also the other functions), is not working has it 
used to be, older versions of the compiler did not require any 
change or setting the SHELL.

How to change the SHELL, that is used by executeShell? userShell 
will always return /bin/sh.

I've tested by setting the SHELL to /bin/bash using the 
environment function. If I execute echo $SHELL inside the 
executeShell it will show /bin/bash has expected.

My issue is that the command I'm executing inside executeShell is 
throwing and error and showing that the execution is done by 
/bin/sh.

My code:
executeShell("diff -u <(echo "~data1~") <(echo "~data2~")");

Output:
/bin/sh: 1: Syntax error: "(" unexpected

This is caused by a limitation from /bin/sh that cannot perform 
process substitution.

Can this commit be the reason? 
https://github.com/D-Programming-Language/phobos/commit/a524a3571b18e440c4dd751fcf4e2d00b834fb22


More information about the Digitalmars-d-learn mailing list