2013-08-02 4 views
5

にアクセスすることができませんそのエイリアスを使用します(秒で設定)。ただし、作成したエイリアスが見つからないようです。私は、スクリプトをソースにするために、「SSH経由でファイルを送信したりコマンドを実行する」ビルドステップを使用する以外に、スクリプトプラグインを使用していません。ジェンキンスは、私は、そのユーザの<code>.bashrc</code>にエイリアスを追加し、<code>.bashrc</code>自体をソース<em>別</em> bashスクリプトをソースbashスクリプトを供給するためにジェンキンスジョブを構成しており、元のスクリプトはしようとシェル別名

ジョブはこの行います

source ./test_script.sh 

test_script.shは次のようになります。

echo "In test_script.sh" 
echo $USER 
echo $HOME 
source ./setup_env.sh 
echo "\nBack in test_script.sh" 
alias foo 
foo 

そして最後に、setup_env.shは次のようになります。

echo "\nIn setup_env.sh" 
echo "alias foo=\"echo foobar\"" >> $HOME/.bashrc 
source $HOME/.bashrc 2>/dev/null 
cat $HOME/.bashrc 

私はジェンキンスからの受信出力を仕事は次のようになります:

In test_script.sh 
my_user 
/home/my_user 
\nIn setup_env.sh 
...all of my bashrc... 
alias foo="echo foo" 
\nBack in test_script.sh 
alias foo='echo foo' 
./test_script.sh: line 7: foo: command not found 

なぜこれが起こっているのかわかりません。私はコマンドラインで自分自身をうまく実行して成功することができます。なぜ、ジェンキンスは明らかにそれを見つけることができるときに新しいエイリアスを使用できないのですか(alias fooコマンドの出力によって示されます)。あなたが期待することができるよう

+0

参照を[なぜ私のbashスクリプトは、別名を認識しません?] (http://unix.stackexchange.com/a/1498/43764) – Armali

答えて

4

あなたechoコマンド
の出力に表示され\nが、これはbashの下で実行されていないお勧めします。
デフォルトのシェルの特に設定 -

あなたジェンキンスユーザー
(またはあなたがジェンキンスを実行し、他のユーザー)の設定を確認してください。これをテストする

、スクリプトの先頭でそれらのいずれかの行を追加します。

env 

または

env | grep -i shell 


、スクリプトが正しいシェルの下で実行することを確認することを検討すべき各スクリプトの最初の行に "shebang"行を追加します。 「バッシュ」の場合
、例えば、次の最初の行を追加する必要があります

#!/bin/bash 

を(それが...自動構文ハイライトは思うかもしれないものにもかかわらず、コメントはありません)

7

この問題を持っています誰のために、あなたはジェンキンスと、デフォルトではオフであるように思わexpand_aliasesシェルオプション、設定する必要があります。

shopt expand_aliases # check if it's on 
shopt -s expand_aliases # set expand_aliases option to true 
shopt expand_aliases # it should be on now 

# test with a simple alias, should print 1 
alias x="python -c 'print 1'" 
x 
関連する問題

 関連する問題