我有一个执行hdfs命令的scala文件,如下所示:
hdfs dfs -mkdir /test/
当我在shell中运行命令时,它运行得很好,因为我在.bashrc文件中设置了以下别名:
alias hdfs='/usr/local/hadoop-2.7.0/bin/hdfs'
…但是,当我使用SBT在Scala代码中构建运行shell命令的代码时,我得到以下错误:
java.io.IOException: Cannot run program "hdfs": error=2, No such file or directory
是否有一种方法可以识别别名?我不能更改代码,因为我希望程序可以在任何安装了hdfs的系统上运行,无论目录如何,唯一需要更改的是别名。
进一步信息:我在hadoop的docker映像中运行我的测试(不应该改变任何东西),该映像运行一个脚本,每次容器启动时执行以下两行:
source ~/.bashrc # To get the alias
shopt -s expand_aliases # To allow alias expansion in your script
修复了.bashrc文件
中的以下行export PATH=$PATH:/usr/local/hadoop/bin/