псевдонимы команд в qsub

Параметр -V с qusb импортирует только переменную среды, но не псевдоним из .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 $PYTHONPATH и ls работают нормально, но ll и la дают ошибку ll: command not found . Итак, как импортировать команды псевдонимов в qsub?

ИЛИ есть ли лучшая альтернатива alias, чтобы команды (ll или la) вели себя как ls и могли быть легко импортированы


person d.putto    schedule 03.08.2012    source источник


Ответы (2)


Псевдонимы предназначены для удобства командной строки. Они не очень подходят для использования в сценариях. Для большинства целей вы должны использовать функции. Функции можно экспортировать в дочерние сценарии Bash, но вряд ли в другие среды.

Тем не менее, вы можете попробовать явно указать источник ~/.bashrc в своем сценарии qsub.

. $HOME/.bashrc

or

source $HOME/.bashrc

Я не знаю, какой из них поддерживается qsub.

person Dennis Williamson    schedule 03.08.2012

~/.bashrc не интерпретируется, если вы запускаете скрипт не в интерактивном режиме. Вы должны включить интерактивный режим

#!/bin/bash -i

или лучше просто явно импортировать ~/.bashrc в начале скрипта:

. ~/.bashrc
person Igor Chubin    schedule 03.08.2012