diff --git a/crates/nu-command/src/core_commands/def_env.rs b/crates/nu-command/src/core_commands/def_env.rs index e880d1d89d..14c66022be 100644 --- a/crates/nu-command/src/core_commands/def_env.rs +++ b/crates/nu-command/src/core_commands/def_env.rs @@ -28,7 +28,33 @@ impl Command for DefEnv { fn extra_usage(&self) -> &str { r#"This command is a parser keyword. For details, check: - https://www.nushell.sh/book/thinking_in_nushell.html"# + https://www.nushell.sh/book/thinking_in_nushell.html + +=== EXTRA NOTE === +All blocks are scoped, including variable definition and environment variable changes. + +Because of this, the following doesn't work: + +def-env cd_with_fallback [arg = ""] { + let fall_back_path = "/tmp" + if $arg != "" { + cd $arg + } else { + cd $fall_back_path + } +} + +Instead, you have to use cd in the top level scope: + +def-env cd_with_fallback [arg = ""] { + let fall_back_path = "/tmp" + let path = if $arg != "" { + $arg + } else { + $fall_back_path + } + cd $path +}"# } fn is_parser_keyword(&self) -> bool { diff --git a/crates/nu-command/src/core_commands/export_def_env.rs b/crates/nu-command/src/core_commands/export_def_env.rs index 65de978865..b08311b0c6 100644 --- a/crates/nu-command/src/core_commands/export_def_env.rs +++ b/crates/nu-command/src/core_commands/export_def_env.rs @@ -28,7 +28,33 @@ impl Command for ExportDefEnv { fn extra_usage(&self) -> &str { r#"This command is a parser keyword. For details, check: - https://www.nushell.sh/book/thinking_in_nushell.html"# + https://www.nushell.sh/book/thinking_in_nushell.html + +=== EXTRA NOTE === +All blocks are scoped, including variable definition and environment variable changes. + +Because of this, the following doesn't work: + +export def-env cd_with_fallback [arg = ""] { + let fall_back_path = "/tmp" + if $arg != "" { + cd $arg + } else { + cd $fall_back_path + } +} + +Instead, you have to use cd in the top level scope: + +export def-env cd_with_fallback [arg = ""] { + let fall_back_path = "/tmp" + let path = if $arg != "" { + $arg + } else { + $fall_back_path + } + cd $path +}"# } fn is_parser_keyword(&self) -> bool {