在MacOS X上更改VSCode集成式shell的提示符

4

我刚刚安装了VScode,发现它在OSX上默认使用Bash作为shell,其默认提示符为bash-3.2$;因此,我无法看到当前的工作目录。这意味着我需要频繁地输入'pwd'和'ls',非常繁琐。

我尝试在设置中更改默认shell,但没有成功。

"terminal.integrated.shell.osx": "/Applications/Utilities/Terminal.app" 

或者
"terminal.integrated.shell.osx": "/Applications/iTerm.app"

这好像不起作用,我在这里犯了什么错误吗?

我还想知道是否限制使用bash,我能否配置它显示工作目录而不仅仅是bash-3.2$

请参阅此默认情况下VSCode集成终端的屏幕截图。提前致谢!


话虽如此,修改提示符以设置一个显示您目录的PS1很容易;例如,请参见http://apple.stackexchange.com/questions/28739/in-terminal-modify-the-text-that-comes-before。 - Charles Duffy
1
...标准提示符显示主机名和工作目录,格式为PS1='\h:\W \u\$'。如果你点击链接,他们提供了修改~/.bashrc文件以控制显示哪个提示符的指导。 - Charles Duffy
...等一下,如果这是关于VSCode而不是MacOS终端的问题,那么它是相关的。在问题标题中强调这一点可能会有所帮助。您是否在一般的终端应用程序或仅在VSCode中遇到此问题? - Charles Duffy
(为了明确,如果您只在VSCode中遇到问题,那意味着它启动的shell没有读取您的dotfiles,这为我们提供了一条调查途径) - Charles Duffy
因此,这里的假设情况是,当通过VSCode启动bash时,其行为与通过终端启动bash时不同。如果这种假设是正确的 - 并且我们希望得到澄清 - 那么这是一个合理和热门的问题,我们在这里可以解决。 - Charles Duffy
显示剩余2条评论
2个回答

2
我使用Ubuntu,并且只在~/.bashrc的末尾添加了以下行:
最初的回答:
if [ "$TERM_PROGRAM" = "vscode" ]; then
  PS1='\$ '
fi

试一下,如果在你的操作系统上有效,请告诉我。


这个建议非常完美。在VSCode会话中,人们不需要一个完整的shell提示符,因为该会话可能只是支持正在进行的任何项目。在我的情况下,我只需要一个终端并排放置在控制台窗口旁边,以便执行正在开发的程序并检查其返回值。通常,我谈论的是一些Python脚本参数解析或HTTPServer回显。在终端上轻松地curl -F 'file=@test.json' -X POST localhost:8080,并立即在控制台中检查其返回值。 - Gustavo Pinsard

1

您可以通过定义PS1来设置提示符包含当前工作目录:

PS1="\w $"
$只是视觉上的语法糖。你可以让你的提示显示各种各样的内容。将定义放入~/.bashrc~/.profile中,以便在登录时设置它。
详见GNU Bash手册中的控制提示符一节。
如果您不习惯编辑bash初始化文件,可以通过Visual Studio Code进行操作,方法是转到View->Command Palette并执行以下命令(仅限一次)。
Install 'Code' command in path

然后打开集成终端并输入以下内容:

code ~/.bashrc

然后在该文件底部添加PS1定义。


它们还表示,他们正在尝试将默认 shell 更改为 Terminal - 忽略了 shell 和终端之间的混淆,这相当明确地意味着 Terminal 已经以他们希望的方式显示提示符,并且问题是特定于 VSCode 的。 - Charles Duffy
我猜测VSCode没有将bash作为登录shell调用,所以他们的.bash_profile没有被执行?尽管PS1配置应该放在.bashrc中,所以这应该不会有影响。 - Charles Duffy
我是一个新的VSCode用户,但当我调用集成终端时,我会得到一个登录shell,其中包含我的登录提示符和个人别名等。 - Greg Tarsa
@JamieOMaguire,我在我的答案中添加了编辑~/.bashrc文件的过程。顺便说一下,您可以在该文件中放置各种自定义内容,包括命令行别名。我在答案中引用的GNU Bash手册是一个庞大但写得很好的资源,您可以在其中学习有关命令行功能的知识。 - Greg Tarsa
很高兴能够帮忙。如果这个回答解决了您的问题,请相应地标记答案! - Greg Tarsa
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接