Bash 脚本打开一个终端并 cd 进入一个目录

mar*_*lar 3 bash

我正在尝试编写一个简单的 bash 脚本,当从命令行运行时,它会cd进入一个默认目录,然后在文件浏览器中打开该文件夹:

#!/bin/bash

if [ -z "$1" ]
then
  # unless $1 is specified, cd into main proj
  cd code/ruby/my-main-proj
else
  # cd into project specified by $1
  cd code/ruby/$1
fi

# open folder in file manager    
pcmanfm .
Run Code Online (Sandbox Code Playgroud)

这很棒,它给了我两件事:

  1. 一个命令提示符,其工作目录设置为我想要的项目
  2. 同一项目的文件浏览器

麻烦的是,我想运行我的bash脚本点击一个桌面图标,但它目前的形式下,终端开不起来,只是文件浏览器..

所以我做了一个修改,试图让终端也打开:

then
  # unless $1 is specified, cd into main proj
  x-terminal-emulator -e "cd code/ruby/my-main-proj"
else
  # code same as before    
Run Code Online (Sandbox Code Playgroud)

但是当终端打开时,它只显示一个空白屏幕,没有提示或密码。我怎样才能打开一个终端,并将它的工作目录更改为我试图在我的 bash 脚本中指定的目录?

Att*_* O. 5

您的问题是您没有在终端模拟器中执行 shell,而是尝试执行cd,这是一个 shell 命令,而不是实际的 shell(甚至不是实际的可执行文件)。

\n\n

您可以创建一个桌面入口文件,在自定义工作目录中启动 shell,如下所示:

\n\n

我的项目.桌面

\n\n
[Desktop Entry]\nType=Application\nTerminal=true\nExec=x-terminal-emulator\nPath=/path/to/code/ruby/my-main-proj\nName=My Project\n
Run Code Online (Sandbox Code Playgroud)\n\n

注意上面的Path=\xe2\x80\xa6

\n


小智 5

我没有让它与 x-terminal-emulator 一起工作,而是与标准的 gnome 终端一起工作。

user@MacBookPro:~$ gnome-terminal --working-directory=~/code/ruby/my-main-proj
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。