diff options
author | Øyvind A. Holm <sunny@sunbase.org> | 2015-06-02 04:06:09 +0200 |
---|---|---|
committer | Øyvind A. Holm <sunny@sunbase.org> | 2015-06-02 04:06:09 +0200 |
commit | 7be85679c537110f799eae57aa135a317b253f32 (patch) | |
tree | 456f0ab1d3944c5f7a72a5faa9458afdcd354a0d | |
parent | 7ca912e45255bf4809af005ba9d31e9b087ef45e (diff) |
Check for NCDU_SHELL environment variable when spawning shell
Check if the environment variable NCDU_SHELL is defined before the SHELL
variable is checked. This makes it possible to specify a program to
execute when 'b' is pressed. Setting SHELL to for example "mc" (Midnight
Commander) didn't work because mc already uses SHELL to execute
commands.
-rw-r--r-- | doc/ncdu.pod | 12 | ||||
-rw-r--r-- | src/shell.c | 9 |
2 files changed, 15 insertions, 6 deletions
diff --git a/doc/ncdu.pod b/doc/ncdu.pod index e0ba511..61a009b 100644 --- a/doc/ncdu.pod +++ b/doc/ncdu.pod @@ -214,9 +214,15 @@ Refresh/recalculate the current directory. Spawn shell in current directory. -We first check the $SHELL environment variable of the user for the preferred -shell interpreter. If it's not set, we fall back to the compile time -configured default shell (usually /bin/bash). +We first check the $NCDU_SHELL environment variable of the user for the +preferred shell interpreter. If it's not set, $SHELL is checked. If that +variable also isn't defined, we fall back to the compile time configured +default shell (usually /bin/bash). This allows you to specify which program to +launch when 'b' is pressed. For example, if you want ncdu to execute the +Midnight Commander file manager in the current directory: + + export NCDU_SHELL=mc + ncdu =item q diff --git a/src/shell.c b/src/shell.c index eb275cd..86d8095 100644 --- a/src/shell.c +++ b/src/shell.c @@ -52,9 +52,12 @@ void shell_draw() { "Press any key to continue.", full_path, res); } else { - char *shell = getenv("SHELL"); - if (shell == NULL) - shell = DEFAULT_SHELL; + char *shell = getenv("NCDU_SHELL"); + if (shell == NULL) { + shell = getenv("SHELL"); + if (shell == NULL) + shell = DEFAULT_SHELL; + } res = system(shell); |