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

问题描述 投票:4回答:2

[我正在使用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文件之间的区别。

csh tcsh
2个回答
16
投票

您可以使用:

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

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

使用`pwd`将不起作用,因为cshrc文件在Shelll启动时是只读的[[once,而不是在每次目录更改时都是只读的。

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

cshrccsh使用tcsh文件,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.

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

.cshrc是csh或tcsh的配置文件,而wheras .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 $

© www.soinside.com 2019 - 2024. All rights reserved.