[转帖]要怎么设定 prompt 才会显示出目前所在的目录?_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3407 | 回复: 0   主题: [转帖]要怎么设定 prompt 才会显示出目前所在的目录?        下一篇 
赖文婷
注册用户
等级:少校
经验:1094
发帖:81
精华:0
注册:2012-11-5
状态:离线
发送短消息息给赖文婷 加好友    发送短消息息给赖文婷 发消息
发表于: IP:您无权察看 2012-11-13 16:15:49 | [全部帖] [楼主帖] 楼主

这得视你的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%" 而?nbsp;"/usr/spool/mail%") 则用 

alias setprompt 'set prompt="$cwd:t% "'


  有些旧版的 csh 将 && 和 || 的意义弄反了。你可以试试看: 

false && echo bug


  若结果是印出 "bug",那就把 && 和 || 对调,或找一个没有这种 

    bug 的 csh 来用。 

Bourn Shell (sh):


  如果你有较新版的 Bourn Shell(SVR2 或更新的版本),那么你就可 

    以用一个shellfunction 来造你自己的命令,譬如 "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 loginshellto 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 Cshell(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 $ '




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论