2012-08-03 120 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切換交互模式