[ 
https://issues.apache.org/jira/browse/HADOOP-10797?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14060944#comment-14060944
 ] 

Colin Patrick McCabe commented on HADOOP-10797:
-----------------------------------------------

There's a pretty large number of scripts relying on '#!/bin/bash'... I don't 
think the patch posted here fixes them all.

{code}
cmccabe@keter:~/hadoopST/trunk> grep -rI '#!/bin/bash' *
dev-support/findHangingTest.sh:#!/bin/bash
dev-support/create-release.sh:#!/bin/bash
hadoop-common-project/hadoop-kms/src/main/libexec/kms-config.sh:#!/bin/bash
hadoop-common-project/hadoop-kms/src/main/conf/kms-env.sh:#!/bin/bash
hadoop-common-project/hadoop-kms/src/main/sbin/kms.sh:#!/bin/bash
hadoop-common-project/hadoop-kms/target/hadoop-kms-3.0.0-SNAPSHOT/libexec/kms-config.sh:#!/bin/bash
hadoop-common-project/hadoop-kms/target/hadoop-kms-3.0.0-SNAPSHOT/sbin/kms.sh:#!/bin/bash
hadoop-common-project/hadoop-kms/target/hadoop-kms-3.0.0-SNAPSHOT/etc/hadoop/kms-env.sh:#!/bin/bash
hadoop-dist/target/hadoop-3.0.0-SNAPSHOT/libexec/kms-config.sh:#!/bin/bash
hadoop-dist/target/hadoop-3.0.0-SNAPSHOT/libexec/httpfs-config.sh:#!/bin/bash
hadoop-dist/target/hadoop-3.0.0-SNAPSHOT/share/hadoop/tools/sls/bin/rumen2sls.sh:#!/bin/bash
hadoop-dist/target/hadoop-3.0.0-SNAPSHOT/share/hadoop/tools/sls/bin/slsrun.sh:#!/bin/bash
hadoop-dist/target/hadoop-3.0.0-SNAPSHOT/sbin/httpfs.sh:#!/bin/bash
hadoop-dist/target/hadoop-3.0.0-SNAPSHOT/sbin/kms.sh:#!/bin/bash
hadoop-dist/target/hadoop-3.0.0-SNAPSHOT/etc/hadoop/httpfs-env.sh:#!/bin/bash
hadoop-dist/target/hadoop-3.0.0-SNAPSHOT/etc/hadoop/kms-env.sh:#!/bin/bash
hadoop-hdfs-project/hadoop-hdfs-httpfs/src/main/libexec/httpfs-config.sh:#!/bin/bash
hadoop-hdfs-project/hadoop-hdfs-httpfs/src/main/conf/httpfs-env.sh:#!/bin/bash
hadoop-hdfs-project/hadoop-hdfs-httpfs/src/main/sbin/httpfs.sh:#!/bin/bash
hadoop-hdfs-project/hadoop-hdfs-httpfs/target/hadoop-hdfs-httpfs-3.0.0-SNAPSHOT/libexec/httpfs-config.sh:#!/bin/bash
hadoop-hdfs-project/hadoop-hdfs-httpfs/target/hadoop-hdfs-httpfs-3.0.0-SNAPSHOT/sbin/httpfs.sh:#!/bin/bash
hadoop-hdfs-project/hadoop-hdfs-httpfs/target/hadoop-hdfs-httpfs-3.0.0-SNAPSHOT/etc/hadoop/httpfs-env.sh:#!/bin/bash
hadoop-tools/hadoop-tools-dist/target/hadoop-tools-dist-3.0.0-SNAPSHOT/share/hadoop/tools/sls/bin/rumen2sls.sh:#!/bin/bash
hadoop-tools/hadoop-tools-dist/target/hadoop-tools-dist-3.0.0-SNAPSHOT/share/hadoop/tools/sls/bin/slsrun.sh:#!/bin/bash
hadoop-tools/hadoop-sls/src/main/bin/rumen2sls.sh:#!/bin/bash
hadoop-tools/hadoop-sls/src/main/bin/slsrun.sh:#!/bin/bash
hadoop-tools/hadoop-sls/target/hadoop-sls-3.0.0-SNAPSHOT/sls/bin/rumen2sls.sh:#!/bin/bash
hadoop-tools/hadoop-sls/target/hadoop-sls-3.0.0-SNAPSHOT/sls/bin/slsrun.sh:#!/bin/bash
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/launcher/TestContainerLaunch.java:
      writer.println("#!/bin/bash\n\n");
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestNodeManagerShutdown.java:
      fileWriter.write("#!/bin/bash\n\n");
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/test/test-container-executor.c:
  if (fprintf(script, "#!/bin/bash\n"
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/launcher/ContainerLaunch.java:
      line("#!/bin/bash");
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/DefaultContainerExecutor.java:
      pout.println("#!/bin/bash");
{code}

bq. Okay, I see. The point to use /bin/sh is that most of these shell scripts 
are very simple and do not require any bash-specific things. And since there 
are systems that do not ship bash by default, this would eliminate one extra 
dependency. But it is not a big deal if you prefer to stick with more 
heavyweight bash instead.

I don't have any objections to switching to /bin/sh, but I think that you'll 
find it a very challenging task.  If your goal is just to get stuff working on 
FreeBSD, you're probably better off spending your effort elsewhere and coming 
back to this later.  You would also need to have a vote on the main mailing 
lists to get a policy enacted to only use /bin/sh in the future, or else your 
work would quickly be undone by people adding new scripts.  Again, I would 
support this, but it seems like the effort to reward ratio is pretty low.

> Hardcoded path to "bash" is not portable
> ----------------------------------------
>
>                 Key: HADOOP-10797
>                 URL: https://issues.apache.org/jira/browse/HADOOP-10797
>             Project: Hadoop Common
>          Issue Type: Bug
>    Affects Versions: 2.4.1
>            Reporter: Dmitry Sivachenko
>         Attachments: bash.patch
>
>
> Most of shell scripts use shebang ling in the following format:
> #!/usr/bin/env bash
> But some scripts contain hardcoded "/bin/bash" which is not portable.
> Please use #!/usr/bin/env bash instead for portability.
> PS: it would be much better to switch to standard Bourne Shell /bin/sh, do 
> these scripts really need bash?



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to