• このエントリーをはてなブックマークに追加

はじめに

Perlbrew をインストールしたら,$HOME/perl5/perlbrew/bin/perlbrew init し,

% ~/perl5/perlbrew/bin/perlbrew init
Perlbrew environment initiated, required directories are created under
 
    ~/perl5/perlbrew
 
Paste the following line(s) to the end of your ~/.bashrc and start a
new shell, perlbrew should be up and fully functional from there:
 
    source ~/perl5/perlbrew/etc/bashrc
 
For further instructions, simply run `perlbrew` to see the help message.
 
Enjoy perlbrew at $HOME!!
%

にしたがって,次の1行を .zshrc に加えます:

source $HOME/perl5/perlbrew/etc/bashrc

そして,source ~/.zshrc

以上,Perlbrew の定石ですが,ここで,次のようなエラーが出てきました:

/home/issm/perl5/perlbrew/etc/bashrc:pwd:6: too many arguments

最近,とあるサーバに Ubuntu Server を入れて,zsh の上に Perl な環境を構築しているときに遭遇した現象です.なお,Perlbrew のバージョンは 0.25 です.

原因

「pwd too many arguments」とかでググッたところ,次の内容が目に留まりました:

If you are using oh-my-zsh and you see something like this error:

pwd:4: too many arguments

This is caused by an alias and due to the sh style sourcing of a script using the ‘.’ operator instead of ‘source’. The alias looks like this:

# .oh-my-zsh/lib/aliases.zsh
alias .='pwd'

To avoid this either remove/comment the alias and/or escape the ‘.’ to bypass the alias like so:

\. /file/being/sourced

RVM: Ruby Version Manager – ZSH Integration with RVM.

要約すると,「source の代わりに . が使われているんだが,キミのzshでは .pwd にエイリアスされているんじゃなイカ? .\. としておけば,これを避けられるよ」といった感じでしょうか.

確認したところ,確かに pwd にエイリアスされていました:

% which .
.: aliased to pwd
%

対象ファイルを修正

ということで,$HOME/perl5/perlbrew/etc/bashrc の該当箇所を修正してみました:

--- /home/issm/perl5/perlbrew/etc/bashrc.orig	2011-07-01 01:38:42.980862704 +0900
+++ /home/issm/perl5/perlbrew/etc/bashrc	2011-07-01 01:38:56.810831503 +0900
@@ -3,7 +3,7 @@
 fi
 
 if [[ -f $PERLBREW_HOME/init ]]; then
-    . $PERLBREW_HOME/init
+    \. $PERLBREW_HOME/init
 fi
 
 __perlbrew_reinit () {
@@ -13,7 +13,7 @@
 
     echo '# DO NOT EDIT THIS FILE' >| $PERLBREW_HOME/init
     command perlbrew env $1 >> $PERLBREW_HOME/init
-    . $PERLBREW_HOME/init
+    \. $PERLBREW_HOME/init
     __perlbrew_set_path
 }

これで,冒頭のエラーが出なくなりました.

そこまでしなくても

まぁ,

alias .=source

みたいなものを .zshrc に加えれば済む話でもありそうですがw

おわりに

以上,Perlbrewインストール後の初期化(?)の段階で何だかエラーが出たときの,一対処方法でした.