2012-08-03 80 views
2

使用qusb的-V选项仅导入环境变量,但不导入.bashrc中的别名。例如qsub中的别名命令

### in .bashrc 
alias ll='ls -ltr' 
alias la='ls -A' 
export PYTHONPATH=/local/python_other:$PYTHONPATH 

,并使用qsub脚本

#!/bin/sh  
#$ -V 
echo $PYTHONPATH 
ls 
ll 
la 

在这种情况下echo $PYTHONPATHls工作正常,但llla给出错误ll: command not found。 那么如何在qsub中导入别名命令?

OR是那里alias以便命令(llla)任何更好的替代表现得像ls并且可以容易地导入

回答

2

别名旨在是命令行的便利。它们不适合用于脚本编写。对于大多数目的,你应该使用函数。函数可以导出到子Bash脚本,但不可能用于其他环境。

也就是说,您可以尝试在您的qsub脚本中明确采购您的~/.bashrc

. $HOME/.bashrc 

source $HOME/.bashrc 

我不知道哪一个是通过使用qsub支持。

1

~/.bashrc如果您不在交互模式下运行脚本,则不会被解释。

. ~/.bashrc 
: 必须明确在脚本的开始对

#!/bin/bash -i 

或更好的只是导入~/.bashrc切换交互模式