Chinaunix首页 | 论坛 | 博客
  • 博客访问: 124984
  • 博文数量: 25
  • 博客积分: 1425
  • 博客等级: 上尉
  • 技术积分: 302
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-22 14:47
个人简介

。。。

文章分类

全部博文(25)

文章存档

2008年(25)

我的朋友

分类:

2008-03-25 21:18:41

 

Unix/Linux PS1(PS2)设置
    
  这得视你的 shell 而定。有些 shell 很容易,有些 shell 很难,有些根本办不到。     
   
  C Shell (csh):     
   
    将以下的东西加入你的 .cshrc 里。     
   
          alias setprompt 'set prompt="${cwd}% "'     
          setprompt           # to set the initial prompt     
          alias cd 'chdir \!* && setprompt'     
   
    假如你有用 pushd 与 popd, 把底下的东西也加进去。     
   
          alias pushd 'pushd \!* && setprompt'     
          alias popd  'popd  \!* && setprompt'     
   
    若你的 C shell 没有 $cwd 这个变数,那就得用 `pwd` 代替之。     
   
    若你想要的只是 prompt 里有目前所在目录的最后一个成分     
    ("mail%" "/usr/spool/mail%") 则用     
   
          alias setprompt 'set prompt="$cwd:t% "'     
   
    有些旧版的 csh 将 && 和 || 的意义弄反了。你可以试试看:     
   
          false && echo bug     
   
    若结果是印出 "bug",那就把 && 和 || 对调,或找一个没有这种     
    bug 的 csh 来用。     
   
  Bourn Shell (sh):     
   
    如果你有较新版的 Bourn Shell(SVR2 或更新的版本),那么你就可     
    以用一个 shell function 来造你自己的命令,譬如 "xcd":     
   
          xcd() { cd $* ; PS1="`pwd` $ ";}     
   
    如果你的 Bourn Shell 是比较旧的版本,也是可以做到,但是方法比     
    较复杂。这里提供一个方法。把以下的内容加入你的 .profile:     
   
          LOGIN_SHELL=$$ export LOGIN_SHELL     
          CMDFILE=/tmp/cd.$$ export CMDFILE     
          # 16 is SIGURG, pick a signal that's not likely to be     
          used     
          PROMPTSIG=16 export PROMPTSIG     
          trap '. $CMDFILE' $PROMPTSIG     
   
    然后把以下的部份写成一个可执行的 script(不需要缩排),名字就     
    叫做 "xcd",放在你的 PATH 中     
   
          : xcd directory - change directory and set prompt     
          : by signalling the login shell to read a command file     
   
          cat >${CMDFILE?"not set"} <        cd $1     
          PS1="\`pwd\`$"     
          EOF     
          kill -${PROMPTSIG?"not set"} ${LOGIN_SHELL?"not set"}     
   
    那么,现在就可已用 "xcd /some/dir" 来改变工作目录了。     
   
  Korn Shell (ksh):     
   
    把下面这行加入你的 .profile 中:     
   
          PS1='$PWD $ '     
   
    如果你只想显示最后一个部分,那么就用     
   
          PS1='${PWD##*/} $ '     
   
  T C shell (tcsh)     
   
    Tcsh 是常用的 csh 加强版,增加了一些内建变数(及许多其他的功     
    能):     
   
          %~          the current directory, using ~ for $HOME     
          %/          the full pathname of the current directory     
          %c or %.    the trailing component of the current directory     
   
    所以你可以直接用     
   
          set prompt='%~'     
   
  BASH (FSF's "Bourne Again Shell")     
   
    $PS1 中的 \w 表示工作目录的完整路径(以 ~ 表示 $HOME);\W 则     
    是表示工作目录的最后一个部份。所以,只要把前面所提有关 sh 和     
    ksh 的方法做以下的修改     
   
          PS1='\w $ '     
    或     
          PS1='\W $ '
      solaris下: PS1='$PWD>'
 
 
阅读(2676) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~