我想要这样的东西:
"vivek@grishma:~/xxx/yyy/zzz/src$"
显示为
"vivek@grishma:datasource$"
我会以某种方式预定义“数据源”作为上面长路径的别名。
使用别名命令作为
" alias datasource='~/xxx/yyy/zzz/src'"
对于导航很有用,但它不会删除提示中的长路径。
这可能吗?
PS-我不希望它只是“vivek@grishma:”,因为每次我都应该运行 pwd 才能知道我的工作目录。
答案1
这将做到:
PS1='\u@\h:$(
case $PWD in
$HOME/xxx/yyy/zzz/src) echo "datasource ;;
*) echo "\w" ;;
esac
)\$'
这也使您能够灵活地定义其他特殊目录。
别名在这里帮不了你。
为了减少重复,请将所有特殊目录放入一个数组中,并使用它来生成别名和提示符。将所有这些放入您的 ~/.bashrc 中:
declare -A labels=(
[$HOME/xxx/yyy/zzz/src]=datasource
[$HOME/foo/bar]=baz
)
for path in "${!labels[@]}"; do
alias "${labels[$path]}"="$path"
done
function path_label () {
local IFS=:
if [[ ":${!labels[*]}:" == *:"$PWD":* ]]; then
# we're in a "known" dir
echo "${labels[$PWD]}"
else
return 1
fi
}
PS1='\u@\h:$( path_label || echo "\w" )\$'
答案2
将以下脚本放入你的~/.bashrc
if [ "$(pwd)" == "$HOME/xxx/yyy/zzz/src" ]; then
PS1='\u@\h:datasource$ '
else
:
fi
转到目录~/xxx/yyy/zzz/src
并更改提示
. ~/.bashrc
在其他目录中,要再次恢复原始提示,请输入您的~/.bashrc
.
我认为你不需要为此使用别名。你始终可以使用别名,例如
alias src='. ~/.bashrc'