[
https://issues.apache.org/jira/browse/HADOOP-14976?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16220817#comment-16220817
]
Allen Wittenauer commented on HADOOP-14976:
-------------------------------------------
Actually, there is an easy way out of this: hard set HADOOP_SHELL_EXECNAME
rather than calculate it dynamically.
Originally, HADOOP_SHELL_EXECNAME was meant to be 'smart' and was only used for
hadoop_usage output. When dynamic subcommands came along, it became obvious
that the code would need some way to tell apart commands.
HADOOP_SHELL_EXECNAME got re-purposed a bit but kept the dynamic nature to make
it easy to copy-n-paste the header between the executables.
So we could just change the top to remove the calculation off of MYNAME,
running the risk that someone who copies and pastes the code without
understanding it may make some big mistakes. [IMO, this risk is higher than
one would think, given how often hadoop's shell code was previously propagated.
Those mistakes are still being repeated in new projects.]
> Allow overriding HADOOP_SHELL_EXECNAME
> --------------------------------------
>
> Key: HADOOP-14976
> URL: https://issues.apache.org/jira/browse/HADOOP-14976
> Project: Hadoop Common
> Issue Type: Improvement
> Reporter: Arpit Agarwal
>
> Some Hadoop shell scripts infer their own name using this bit of shell magic:
> {code}
> 18 MYNAME="${BASH_SOURCE-$0}"
> 19 HADOOP_SHELL_EXECNAME="${MYNAME##*/}"
> {code}
> e.g. see the
> [hdfs|https://github.com/apache/hadoop/blob/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/bin/hdfs#L18]
> script.
> The inferred shell script name is later passed to _hadoop-functions.sh_ which
> uses it to construct the names of some environment variables. E.g. when
> invoking _hdfs datanode_, the options variable name is inferred as follows:
> {code}
> # HDFS + DATANODE + OPTS -> HDFS_DATANODE_OPTS
> {code}
> This works well if the calling script name is standard {{hdfs}} or {{yarn}}.
> If a distribution renames the script to something like foo.bar, , then the
> variable names will be inferred as {{FOO.BAR_DATANODE_OPTS}}. This is not a
> valid bash variable name.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]