从scala代码执行的Shell命令不识别bash别名



我有一个执行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/

最新更新