2

qusb 的 -V 选项仅导入环境变量,但不导入 .bashrc 的别名。例如

### 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 中导入别名命令呢?

或者有没有更好的替代方法,alias以便命令(llla)表现得像ls并且可以轻松导入

4

2 回答 2

2

别名旨在提供命令行便利。它们不适合在脚本中使用。对于大多数用途,您应该使用函数。函数可以导出到子 Bash 脚本,但不太可能导出到其他环境。

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

. $HOME/.bashrc

或者

source $HOME/.bashrc

我不知道qsub支持其中哪些。

于 2012-08-03T09:41:15.260 回答
1

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

#!/bin/bash -i

~/.bashrc或者更好的是在脚本开头显式导入:

. ~/.bashrc
于 2012-08-03T09:42:58.053 回答