如何更改我的tcsh提示以显示我当前的工作目录?

时间:2015-10-09 05:21:33

标签: csh tcsh

我正在使用tcsh,我正在寻找一种响应工作目录的方式,我至少想要显示最后一个文件夹名称,而不是获取完整路径。

想象一下我当前的工作目录是:

  [user@hostname/home/us/Desktop/my/projects]

然后我想显示如下提示:

    [user@hostname projects] 

目前我正在使用我编写的文件中的.cshrc文件:

  alias setprompt 'set prompt="[suman@`hostname` `pwd`:~] $"'
  alias setprompt 'set prompt="${LightGreen}[${yellow}suman${Light}${LightPurple}@%m ${LightGreen}:~] ${yellow}$ ${end} "'

我也没有PS1变量而且不知道它的作用,我想知道.cshrc文件和.bashrc文件之间的区别。

2 个答案:

答案 0 :(得分:13)

您可以使用:

set prompt = '[%n@%m %c]$ '

%n用于用户名,%m用于主机名,直到第一个.%c用于最后一个目录部分。有大量此类替换可用,您可以在tcsh(1)中找到它们的列表,为方便起见,在下面重复。

使用`pwd`无法正常工作,因为cshrc文件在shelll启动时只读取一次,而不是每次更改目录。

  

我想知道.cshrc文件和.bashrc文件之间的区别。

cshrc文件由cshtcsh使用,bashrc文件由bash使用。虽然它们用于相同的目的,但它们是不同的程序(例如~/.mozilla/firefox~/.config/chromium)。

           %/  The current working directory.
           %~  The current working directory, but with one's  home  direc‐
               tory  represented  by `~' and other users' home directories
               represented  by  `~user'  as  per  Filename   substitution.
               `~user'  substitution happens only if the shell has already
               used `~user' in a pathname in the current session.
           %c[[0]n], %.[[0]n]
               The trailing component of the current working directory, or
               n  trailing  components if a digit n is given.  If n begins
               with `0', the number  of  skipped  components  precede  the
               trailing  component(s)  in the format `/<skipped>trailing'.
               If the ellipsis shell variable is set,  skipped  components
               are  represented  by  an  ellipsis  so  the  whole  becomes
               `...trailing'.  `~' substitution is done as in `%~'  above,
               but  the  `~'  component  is ignored when counting trailing
               components.
           %C  Like %c, but without `~' substitution.
           %h, %!, !
               The current history event number.
           %M  The full hostname.
           %m  The hostname up to the first `.'.
           %S (%s)
               Start (stop) standout mode.
           %B (%b)
               Start (stop) boldfacing mode.
           %U (%u)
               Start (stop) underline mode.
           %t, %@
               The time of day in 12-hour AM/PM format.
           %T  Like `%t', but in 24-hour format (but see  the  ampm  shell
               variable).
           %p  The  `precise'  time  of  day in 12-hour AM/PM format, with
               seconds.
           %P  Like `%p', but in 24-hour format (but see  the  ampm  shell
               variable).
           \c  c is parsed as in bindkey.
           ^c  c is parsed as in bindkey.
           %%  A single `%'.
           %n  The user name.
           %N  The effective user name.
           %j  The number of jobs.
           %d  The weekday in `Day' format.
           %D  The day in `dd' format.
           %w  The month in `Mon' format.
           %W  The month in `mm' format.
           %y  The year in `yy' format.
           %Y  The year in `yyyy' format.
           %l  The shell's tty.
           %L  Clears  from the end of the prompt to end of the display or
               the end of the line.
           %$  Expands the shell or environment variable name  immediately
               after the `$'.
           %#  `>'  (or the first character of the promptchars shell vari‐
               able) for normal users, `#' (or  the  second  character  of
               promptchars) for the superuser.
           %{string%}
               Includes string as a literal escape sequence.  It should be
               used only to change terminal attributes and should not move
               the  cursor  location.  This cannot be the last sequence in
               prompt.
           %?  The return code of the command  executed  just  before  the
               prompt.
           %R  In prompt2, the status of the parser.  In prompt3, the cor‐
               rected string.  In history, the history string.

           `%B', `%S', `%U' and `%{string%}' are available in only  eight-
           bit-clean shells; see the version shell variable.

           The  bold,  standout  and underline sequences are often used to
           distinguish a superuser shell.  For example,

               > set prompt = "%m [%h] %B[%@]%b [%/] you rang? "
               tut [37] [2:54pm] [/usr/accts/sys] you rang? _

           If `%t', `%@', `%T', `%p', or `%P' is used, and noding  is  not
           set,  then print `DING!' on the change of hour (i.e, `:00' min‐
           utes) instead of the actual time.

           Set by default to `%# ' in interactive shells.

答案 1 :(得分:0)

  

编辑:我以为这个问题是关于bash的,因为它   被标记为。

.cshrc是csh或tcsh的配置文件,而.bashrc是bash的配置文件。即使它们用于类似的目的,bash和csh也只是不同的程序,因此一个的配置不一定适用于另一个。

所以你需要做的就是把这样的一行放到你的.bashrc

PS1='...\w$ '

其中\w是将扩展到当前工作目录的魔术代码,您可以在bash的手册页“提示”部分中查找。

从Cygwin的bash包的默认设置中获取的更完整的示例如下所示:

PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$ '

它将被扩展为这样的提示(但有颜色,uuuh):

user@machine currentdir $