【问题标题】:Gnome-Terminal, how to start in a different directory?Gnome-Terminal,如何在不同的目录中启动?
【发布时间】:2010-10-25 02:04:21
【问题描述】:

每当我在 Ubuntu 中启动控制台 gnome-terminal 时,它都会在主目录中启动。我怎样才能让它从另一个目录开始,比如~/myfolder? 我试图在~/.profile 中写cd ~/myfolder,但没有任何反应。

【问题讨论】:

    标签: linux console terminal gnome


    【解决方案1】:

    如果您像gnome-terminal --working-directory=myfolder 这样启动gnome-terminal,它将从~/myfolder 的工作目录开始,因此您可以在菜单中添加一个新条目以使用该命令而不是另一个。

    【讨论】:

    【解决方案2】:

    我是这样做的 - 使用脚本: 在相同的窗口大小 170x40 中打开 3 个选项卡,每个“选项卡”从不同的目录开始。

    gnome-terminal --geometry=170x40 --working-directory=myfolder1 \
    
    --tab --working-directory=myfolder2 \
    
    --tab --working-directory=myfolder3 
    

    【讨论】:

    【解决方案3】:

    将以下内容添加到您的 ~/.bashrc

    cd ~/myfolder
    

    【讨论】:

    • 它也与这个(下面的链接)一起工作,但我猜这个是一个更好的解决方案。 stackoverflow.com/questions/844677/…
    • 来自“这是一个更好的解决方案”,我的意思是添加到 ~/.bashrc
    • 对 ~/.bashrc 有个警告,即如果您在终端中打开一个新选项卡,您会返回 ~/myfolder,这通常是不可取的。所以现在我认为 gnome-terminal --working-directory=myfolder 是一个更好的解决方案。
    • 这不是 bashrc 的用途。如果你这样做,它将影响你运行的每个交互式 shell,而不仅仅是在 gnome-terminal 中运行的那些。如果你想控制 gnome-terminal,那么设置一些只影响 gnome-terminal 的东西。
    【解决方案4】:

    您可以使用nautilus-open-terminal 扩展名。这允许您右键单击 nautilus 中的文件夹并打开一个终端窗口,该目录作为其工作目录。

    您也可以以正常方式运行终端,键入“cd”,然后将文件夹图标从 nautilus 拖到窗口中。这会将文件夹的路径粘贴到命令行中,然后键入 return 以更改到该目录。您可以对常规文件执行相同的操作,以粘贴其路径并在其上运行命令。

    【讨论】:

      【解决方案5】:

      其实我是这样默认所有人都关闭的。

      gconftool-2 --direct \
      --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory/ \
      --set -- type=bool /apps/nautilus-open-terminal/desktop_opens_home_dir true
      

      【讨论】:

      • 关掉什么...?
      【解决方案6】:

      目录选项

      有选项--working-directory指定终端的启动目录(无短选项形式)。

      /some/dir中打开终端的基本做法是

      gnome-terminal --working-directory=/some/dir
      

      但是有一个陷阱……

      错误的陷阱

      假设我们要在~/dir目录下启动终端。

      这不起作用:

      gnome-terminal --working-directory=~/dir
      

      根据选项语法,该命令看起来非常好,但终端从主目录开始。
      这是因为它没有扩展波浪号 (~),原因令人困惑 - 见下文。

      这些确实有效:

      gnome-terminal --working-directory=/home/auser/dir
      
      gnome-terminal --working-directory=$HOME/dir
      
      gnome-terminal --working-directory ~/dir
      

      波浪号扩展

      请注意,最后一个变体中没有=。因此,~ 位于 shell 字的开头,因此由波浪号扩展处理。

      问题是~ 不会到处扩展,而只是在某些地方。其中之一是变量赋值,例如directory=~/dir。没关系,~ 扩展为 $HOME,但 --working-directory=~/dir 不扩展 ~,因为那不是变量赋值,只是看起来很相似。

      【讨论】:

      • 这是最好的答案。谢谢你:)
      【解决方案7】:

      来自GNOME Terminal - Getting Started

      您还可以指定在配置文件中启动 GNOME 终端时自动运行的命令。

      【讨论】:

      • 我就是这么做的。在./.profile 中写了cd ~/myfolder。但它没有用。
      【解决方案8】:

      如果文件夹有一个复杂的路径,即不仅仅是~/myfolder,你可以在你的主目录中创建一个指向它的符号链接,这样你就可以快速找到它。您还可以设置CDPATH 环境变量来告诉bash 在您键入cd myfolder 时搜索目录列表。

      【讨论】:

        【解决方案9】:

        以 root 用户身份在我想要的目录中打开:

        gnome-terminal --working-directory=/home/my-project/ -x bash -c "sudo su"
        

        【讨论】:

          【解决方案10】:

          我印象深刻 Neil's Mayhew commentVolker's Siegel answer。我不仅尝试为 gnome-terminal,但也保留了桌面环境的习惯行为(我正在使用 Linux Mint 17.1 CinnamonGNOME Terminal 3.6.2,或许它也可以应用于其他 Gnome 同类 DEs)。所以让我把我的两分钱放进去。

          1. ~/.bashrc 的最后添加cd ~/myfolder 就可以了。但正如已经提到的,它会影响每一个 交互式外壳。更重要的是,如果您在文件管理器中打开某个目录(NemoNautilus 或类似 this) 并从那里调用上下文菜单(例如,右键单击然后选择 在终端中打开)的新实例 gnome-terminal 将在~/myfolder 中启动,无论文件管理器中加载的文件夹是什么。 即使您明确运行gnome-terminal --working-directory=/some/other/folder,它仍然会打开~/myfolder。似乎 .bashrc 的方法不可用。

          2. gnome-terminal --working-directory=myfolder 工作正常,但仅当您在 DE 中使用自定义菜单项时 (或桌面上的自定义快捷方式)使用此参数运行终端。如果您想从命令行运行 gnome-terminal 或从迷你启动器(按 Alt + F2),您必须每次都输入参数。无论如何,这种方法或多或少是有用的。


          gnome-terminal 如何确定要打开哪个文件夹?当--working-directory 未指定时,它打开当前 工作目录(例如$PWD),否则它会打开明确指定的目录。

          我找到了以下解决方案。

          在您的 ~/bin 文件夹中创建一个名为 gnome-terminal 的文件。它将充当快捷方式,但来自任何地方(开始菜单, 迷你启动器,其他终端实例等)因为~/bin 已经在$PATH 中(至少在Linux Mint 中......)。制作这个文件 可执行。然后将以下内容放入脚本中:

          #!/bin/bash
          
          home_directory=~
          
          if [ "$PWD" == "$home_directory" ]; then
              # When 'gnome-terminal' was ran from either 
              #     - start menu
              #     - mini-launcher
              #     ... 
              # parent directory is set to $HOME.
              #
              # We respect original command line arguments. 
              # For example, when terminal is ran from another 
              # terminal instance and '--working-directory' is 
              # specified explicitly we should left it as it is.  
              # If there are two '--working-directory' switches 
              # in the command line 'gnome-terminal' will pick up 
              # the last one.
              #
              # Also we use full path to executable here in order
              # to prevent recursive calling of 'gnome-terminal' from 
              # '~/bin'.
              /usr/bin/gnome-terminal --working-directory=/ "$@" 
          else
              # 'gnome-terminal' was from another directory. 
              # We don't change anything.
              /usr/bin/gnome-terminal "$@"
          fi
          

          如果你从开始菜单运行gnome-terminal,你会看到新终端中的当前文件夹是/(你可以使用任何文件夹,例如~/myfolder,因为我们的自定义包装器是一个 Bash 脚本,因此 shell 的扩展工作正常)。

          如果您在文件管理器中调用在终端中打开,您将在新终端中获得当前目录。

          如果您使用显式 --working-directory 参数运行 gnome-terminal(可能来自现有终端实例),新的终端实例将在您指定的目录中打开。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-12-23
            • 1970-01-01
            • 2019-10-11
            相关资源
            最近更新 更多