每当我gnome-terminal
在 Ubuntu 中启动控制台时,它都会在主目录中启动。我怎样才能让它在不同的目录中启动~/myfolder
呢?我试图写信cd ~/myfolder
,~/.profile
但没有任何反应。
10 回答
如果您像启动 gnome-terminal 那样gnome-terminal --working-directory=myfolder
从工作目录开始,~/myfolder
那么您可以在菜单中添加一个新条目以使用该命令而不是另一个命令。
将以下内容添加到您的 ~/.bashrc
cd ~/myfolder
我这样做了 - 使用脚本:在相同的窗口大小 170x40 中打开 3 个选项卡,每个“选项卡”从不同的目录开始。
gnome-terminal --geometry=170x40 --working-directory=myfolder1 \
--tab --working-directory=myfolder2 \
--tab --working-directory=myfolder3
您可以使用nautilus-open-terminal扩展。这允许您右键单击 nautilus 中的文件夹并打开一个终端窗口,该目录作为其工作目录。
您也可以以正常方式运行终端,键入“cd”,然后将文件夹图标从 nautilus 拖到窗口中。这会将文件夹的路径粘贴到命令行中,然后键入 return 以更改到该目录。您可以对常规文件执行相同的操作,以粘贴其路径并在其上运行命令。
实际上,这就是我默认为每个人关闭它的方式。
gconftool-2 --direct \
--config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory/ \
--set -- type=bool /apps/nautilus-open-terminal/desktop_opens_home_dir true
目录选项
有 --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
波浪号扩展
请注意=
,最后一个变体中没有。因此, the~
位于 shell 单词的开头,因此由波浪号扩展处理。
问题是它~
不会到处扩展,而只是在某些地方。其中之一是变量赋值,例如directory=~/dir
. 没关系,~
扩展为$HOME
,但--working-directory=~/dir
不扩展~
,因为这不是变量赋值,只是看起来非常相似。
您还可以指定在配置文件中启动 GNOME 终端时自动运行的命令。
如果文件夹有一个复杂的路径,即不仅仅是~/myfolder
,您可以在您的主目录中创建一个指向它的符号链接,这样您就可以快速找到它。您还可以设置CDPATH
环境变量以告诉 bash 在您键入时搜索目录列表cd myfolder
。
Neil 的 Mayhew 评论 和 Volker 的 Siegel 回答给我留下了深刻的印象 。我不仅尝试为 gnome-terminal设置默认目录,还尝试保留桌面环境的习惯行为(我正在使用Linux Mint 17.1 Cinnamon, GNOME Terminal 3.6.2,也许它也可以应用于其他 Gnome-congenred德斯)。所以让我把我的两分钱放进去。
cd ~/myfolder
在最后添加~/.bashrc
就可以了。但正如已经提到的,它将影响每个交互式 shell。更重要的是,如果您在文件管理器(Nemo或Nautilus或类似的东西)中打开某个目录并从那里调用上下文菜单(例如,右键单击然后选择在终端中打开)新的gnome-terminal实例 将在~/myfolder
无论文件管理器中加载的文件夹如何。即使你gnome-terminal --working-directory=/some/other/folder
显式运行它仍然会打开~/myfolder
。似乎该方法.bashrc
无法使用。gnome-terminal --working-directory=myfolder
工作正常,但仅当您在使用此参数运行终端的 DE(或桌面上的自定义快捷方式)中使用自定义菜单条目时。如果您想从命令行或迷你启动器(按+ )运行gnome-terminal,您必须每次都输入参数。无论如何,这种方法或多或少是可用的。AltF2
gnome-terminal如何确定要打开哪个文件夹?如果--working-directory
未指定,则打开当前工作目录(例如$PWD
),否则打开明确指定的目录。
我找到了以下解决方案。
gnome-terminal
在您的文件夹中创建一个名为的~/bin
文件。它将充当快捷方式,但来自任何地方(开始菜单、迷你启动器、其他终端实例等),因为~/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 的扩展工作正常)。
如果您在文件管理器中呼吁在终端中打开,您将在新终端中获得当前目录。
如果您使用显式参数(可能来自现有终端实例)运行gnome-terminal--working-directory
,则将在您指定的目录中打开新的终端实例。
要以 root 用户身份在我想要的目录中打开,我运行了:
gnome-terminal --working-directory=/home/my-project/ -x bash -c "sudo su"