【发布时间】:2010-10-25 02:04:21
【问题描述】:
每当我在 Ubuntu 中启动控制台 gnome-terminal 时,它都会在主目录中启动。我怎样才能让它从另一个目录开始,比如~/myfolder?
我试图在~/.profile 中写cd ~/myfolder,但没有任何反应。
【问题讨论】:
标签: linux console terminal gnome
每当我在 Ubuntu 中启动控制台 gnome-terminal 时,它都会在主目录中启动。我怎样才能让它从另一个目录开始,比如~/myfolder?
我试图在~/.profile 中写cd ~/myfolder,但没有任何反应。
【问题讨论】:
标签: linux console terminal gnome
如果您像gnome-terminal --working-directory=myfolder 这样启动gnome-terminal,它将从~/myfolder 的工作目录开始,因此您可以在菜单中添加一个新条目以使用该命令而不是另一个。
【讨论】:
gnome-terminal --working-directory %d。
我是这样做的 - 使用脚本: 在相同的窗口大小 170x40 中打开 3 个选项卡,每个“选项卡”从不同的目录开始。
gnome-terminal --geometry=170x40 --working-directory=myfolder1 \
--tab --working-directory=myfolder2 \
--tab --working-directory=myfolder3
【讨论】:
将以下内容添加到您的 ~/.bashrc
cd ~/myfolder
【讨论】:
您可以使用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
请注意,最后一个变体中没有=。因此,~ 位于 shell 字的开头,因此由波浪号扩展处理。
问题是~ 不会到处扩展,而只是在某些地方。其中之一是变量赋值,例如directory=~/dir。没关系,~ 扩展为 $HOME,但 --working-directory=~/dir 不扩展 ~,因为那不是变量赋值,只是看起来很相似。
【讨论】:
来自GNOME Terminal - Getting Started:
您还可以指定在配置文件中启动 GNOME 终端时自动运行的命令。
【讨论】:
./.profile 中写了cd ~/myfolder。但它没有用。
如果文件夹有一个复杂的路径,即不仅仅是~/myfolder,你可以在你的主目录中创建一个指向它的符号链接,这样你就可以快速找到它。您还可以设置CDPATH 环境变量来告诉bash 在您键入cd myfolder 时搜索目录列表。
【讨论】:
以 root 用户身份在我想要的目录中打开:
gnome-terminal --working-directory=/home/my-project/ -x bash -c "sudo su"
【讨论】:
我印象深刻 Neil's Mayhew comment 和 Volker's Siegel answer。我不仅尝试为 gnome-terminal,但也保留了桌面环境的习惯行为(我正在使用 Linux Mint 17.1 Cinnamon, GNOME Terminal 3.6.2,或许它也可以应用于其他 Gnome 同类 DEs)。所以让我把我的两分钱放进去。
在~/.bashrc 的最后添加cd ~/myfolder 就可以了。但正如已经提到的,它会影响每一个
交互式外壳。更重要的是,如果您在文件管理器中打开某个目录(Nemo 或 Nautilus 或类似
this) 并从那里调用上下文菜单(例如,右键单击然后选择 在终端中打开)的新实例
gnome-terminal 将在~/myfolder 中启动,无论文件管理器中加载的文件夹是什么。
即使您明确运行gnome-terminal --working-directory=/some/other/folder,它仍然会打开~/myfolder。似乎
.bashrc 的方法不可用。
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(可能来自现有终端实例),新的终端实例将在您指定的目录中打开。
【讨论】: