I'm in the process of moving over to my new laptop. I run into an issue where a shell script (that worked under gentoo) now no longer works. Here's the error
foo.sh: 18: pushd: not found
Since I'm running this as
sh foo.sh
I turn on debugging with
sh -x foo.sh
Which doesn't help because the result is the same. Weird! I can run them from the command line.
Some searching led to my answer. Pushd and popd, are actual binaries, but are builtin to the shell. The default shell in ubuntu, dash doesn't have these commands. So I need to either invoke my shell as
bash foo.sh
or put
1 | #!/bin/bash
|
as the first line and chmod it, and execute it directly.
Now as to why pushd/popd work from the command line, still haven't figured that out because shell is bash.