所以我有一个脚本来打开带有 2 个选项卡的新终端窗口,但是当我运行它时,这些选项卡中的当前目录不会显示。当使用默认的 ubuntu 的 bashrc 时,它工作正常,但更改\w
为\W
导致当前文件夹不显示,直到使用cd
,之后它工作正常。这里有什么问题?
#!/bin/bash
gnome-terminal --tab --working-directory="/mnt/0000000000/Users/Admin/Desktop/folder1/" --tab --working-directory="/mnt/0000000000/Users/Admin/Desktop/folder2/"
exit 0
PS1 是:
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u:\W\$ '
和
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u: \W\a\]$PS1"
;;
*)
;;
esac
改变/Desktop/folder1/
才能/Desktop/folder1
解决问题。由于某种原因,\W
对最后一个斜杠很敏感,而\w
不是,但像锅这样的路径"~/"
在这两种情况下都很好。
答案1
由于某种原因
\W
对最后一个斜杠敏感,[...]
这个原因记录在 shell 程序的用户手册中:
\W
当前工作目录的基本名称[...]
就您的 shell 而言,基本名称是最后一个斜杠后面的部分。因此,的基本名称/Desktop/folder1
是folder1
,而 的基本名称/Desktop/folder1/
是最后一个斜杠后面的零长度字符串。
这并不完全是 POSIX 基本名称的定义,也不是命令basename
将告诉您的内容;但这是 Unix 和 Linux 程序中常用的近似值。