问题很简单.我想评估PS1我的bash脚本中的当前值.
谷歌上的所有材料都指向了拉皮条的教程,但我想评估一下它将如何由我当前的终端呈现,或者至少由某个终端呈现.
是否有任何软/功能可以帮助我实现这一目标?当然我想要评估所有转义字符,所以echo $PS1在我的情况下这不是很有用.
我有一个脚本(不是我自己编写的),它在我的命令提示符下显示了git branch/svn分支.有谁知道为什么这不适用于mac?它在linux中完美运行.
来自https://github.com/xumingming/dotfiles/blob/master/.ps1:
# Display ps1 with colorful pwd and git status
# Acording to Jimmyxu .bashrc
# Modified by Ranmocy
# --
if type -P tput &>/dev/null && tput setaf 1 &>/dev/null; then
color_prompt=yes
else
color_prompt=
fi
__repo () {
branch=$(type __git_ps1 &>/dev/null && __git_ps1 | sed -e "s/^ (//" -e "s/)$//")
if [ "$branch" != "" ]; then
vcs=git
else
branch=$(type -P hg &>/dev/null && hg branch 2>/dev/null)
if [ "$branch" != "" ]; then
vcs=hg …Run Code Online (Sandbox Code Playgroud) 新手问题,我最近改变了我的PS1:
RESET="\[\017\]"
NORMAL="\[\033[0m\]"
YELLOW="\[\033[0;33m\]"
CYAN="\[\033[0;36m\]"
export PS1="\[$RESET\]\u@\h:\[$CYAN\]\w\[$YELLOW\]\$(__git_ps1)\[$NORMAL\] \$ "
Run Code Online (Sandbox Code Playgroud)
但现在我得到一个换行错误.我创建了一个gif来解释这个问题:

什么想法可能是错的?
我正试图按照我的意愿修改我的Bash提示; 这就是$PS1目前的情况(为了清晰起见,编辑了颜色):
PS1='\u@\h:\w\$ '
Run Code Online (Sandbox Code Playgroud)
结果如下:
andreas@tablet-2710p-ubuntu:~$
Run Code Online (Sandbox Code Playgroud)
如果我在本地运行当前的Bash会话而不是访问远程服务器,我可以调整提示,以便隐藏@tablet-2710p-ubuntu位(由表示@\h)吗?
我还宁愿不硬编码(例如,只是替换任何出现的tablet-2710p-ubuntu)以便于移植,以及以后更改主机名.
可能重复:
Echo扩展PS1
有没有什么办法来"评价" PS1,PS2从bash脚本中,等?
虽然,我可以使用其他方法来获取当前的所有元素PS1,但我真的希望能够重用其定义而不是使用这些替代方法.
例如,
=====================================
PS1 element --> Alternate means
=====================================
\u --> $USER
\h --> $HOSTNAME
\w --> $PWD
...
=====================================
Run Code Online (Sandbox Code Playgroud)
我可以很好地使用我的脚本中的"备用方法"列,但我不想这样做.在我PS1,我,例如,通过终端转义序列使用粗体蓝色,我希望能够通过评估简单地重用PS1.
所以我发现了以下很酷的Bash提示:

..具有以下基本逻辑:
PS1="\[\033[01;37m\]\$? \$(if [[ \$? == 0 ]]; then echo \"\[\033[01;32m\]\342\234\223\"; else echo \"\[\033[01;31m\]\342\234\227\"; fi) $(if [[ ${EUID} == 0 ]]; then echo '\[\033[01;31m\]\h'; else echo '\[\033[01;32m\]\u@\h'; fi)\[\033[01;34m\] \w \$\[\033[00m\] "
Run Code Online (Sandbox Code Playgroud)
然而,这不是非常基本的,恰好是一个令人难以置信的混乱.我想让它更具可读性.
怎么样?
我的 PS1 变量无法正确解析,看起来像这样,
\[\033[01;32m\]\u@\h\[\033[01;34m\] [\w]\[\033[00m\]
\[\033[01;32m\]\u@\h\[\033[01;34m\] [\w]\[\033[00m\]
\[\033[01;32m\]\u@\h\[\033[01;34m\] [\w]\[\033[00m\]mv .bashrc .bash_profile
\[\033[01;32m\]\u@\h\[\033[01;34m\] [\w]\[\033[00m\]source .bash_profile
\[\033[01;32m\]\u@\h\[\033[01;34m\] [\w]\[\033[00m\]
\[\033[01;32m\]\u@\h\[\033[01;34m\] [\w]\[\033[00m\]ls
Applications Desktop Documents Downloads Google Drive Library Movies Music Pictures Public
\[\033[01;32m\]\u@\h\[\033[01;34m\] [\w]\[\033[00m\]vim .bash_profile
\[\033[01;32m\]\u@\h\[\033[01;34m\] [\w]\[\033[00m\]source .bash_profile
\[\e[;31m\][\u@\h \W]$ \[\e[m\]
\[\e[;31m\][\u@\h \W]$ \[\e[m\]
\[\e[;31m\][\u@\h \W]$ \[\e[m\]
\[\e[;31m\][\u@\h \W]$ \[\e[m\]
Run Code Online (Sandbox Code Playgroud)
发生了什么?谢谢。
我是初学者,尝试按照以下链接中的步骤在我的新Mac上设置开发人员环境:http://vanderveer.be/setting-up-my-perfect-developer-environment-on-osx-10-8-mountain -lion-10-8-2-final-edition /.
从git执行文件后,我的终端窗口现在显示:
rbenv: version `1.9.3-p194' not installed
-bash: __git_ps1: command not found
Run Code Online (Sandbox Code Playgroud)
第一行只显示我打开一个新的终端窗口,而第二行显示每次我按返回,无论我输入到终端.
我已经阅读了很多关于stackoverflow的问题,并试图模仿他们的解决方案无济于事.我认为我在使用git安装软件包时犯了一个错误,因为我不是很有经验,我认为现在我可能搞砸了配置,并且还想知道是否有任何方法可以回到bash的默认设置?
非常感谢!艾伦
我在项目文件夹中创建了一个 anaconda 环境,指定了 -p 选项的路径,即不在默认的 anaconda3/envs 文件夹中:
conda create -p venv
Run Code Online (Sandbox Code Playgroud)
问题是当我激活该环境时,终端中的 bash 前缀太长,即将环境的整个路径添加到提示中:
(/path/to/the/environment/venv) user@machine: ~/path/to/environment/$
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个问题,意味着缩短它或从提示中删除前缀?
我的 $PS1:
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
Run Code Online (Sandbox Code Playgroud) $password = ConvertTo-SecureString \xe2\x80\x9cPassword+++\xe2\x80\x9d -AsPlainText -Force\n$Cred = New-Object System.Management.Automation.PSCredential ("Admin", $password)\n$FileLocale = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition\nWrite-Output $FileLocale\n$AntFile = "$FileLocale\\StartApps.ps1"\nWrite-Output $AntFile\nStart-Process PowerShell.exe -ArgumentList "-command &$AntFile -UserCredential $Cred" \nRun Code Online (Sandbox Code Playgroud)\n嗨,该代码在 .ps1 中运行,我调用另一个脚本,他完成了他的工作。但是当我在 ps2exe 的帮助下将其转换为 .exe 时,他不再做他的工作了。作为管理员与否。这不是我第一次使用该启动进程,但这是我第一次使用变量作为命令的目标。有谁知道 ps1 和 exe 之间出了什么问题吗?
\n谢谢
\nps1 ×10
bash ×7
macos ×3
git ×2
anaconda ×1
evaluate ×1
exe ×1
macros ×1
powershell ×1
prompt ×1
ps2exe-gui ×1
python-venv ×1
shell ×1