我想做一些类似于所写的事情 这里不使用 zsh (我使用 bash),但是如果我尝试使用以下命令启动屏幕
screen 'cd /home/cataldo/Programs'
我收到以下错误:
Cannot exec 'cd home/cataldo/Programs': No such file or directory
如果 exec 后没有 qoutes,它也不起作用。双引号没有区别。使用 bash -c "cd .." 不起作用。
可能是一些权限问题或屏幕在启动时以特殊用户身份执行命令?
非常感谢您的帮助!
screen --version
Screen version 4.00.03jw4 (FAU) 2-May-06
cat /etc/debian_version
6.0.3
答案1
它不起作用,因为cd
它是 shell 内置命令( try which cd
)。屏幕上有一个chdir 命令您可以使用它来实现您的目标:将以下内容放入您的 .screenrc 中:
chdir /home/cataldo/Programs
现在启动屏幕,您应该位于指定的目录中。
答案2
screen
不知道,cd
因为它是一个 shell 内置函数,所以screen
无法执行它。但是,screen
有一个内置命令chdir
.如果您chdir
从命令行单独执行screen
,会话中的所有新窗口都screen
将在您的 $HOME 中启动。如果chdir /home/cataldo/Programs
从命令行执行screen
,会话中的所有新窗口都screen
将以/home/cataldo/Programs
.
如果您想在启动新screen
会话时在不同的目录中打开 3 个窗口,请在~/.screenrc
定义目录chdir
后立即启动一个新窗口。
# Start these windows when screen starts up
chdir /home/cataldo/Programs
screen 0
chdir /usr/local/bin
screen 1
chdir /tmp
screen 2
chdir
来自man 1 screen
(注意最后一行)
chdir [directory]
Change the current directory of screen to the specified directory or,
if called without an argument, to your home directory (the value of
the environment variable $HOME). All windows that are created by means
of the "screen" command from within ".screenrc" or by means of "C-a :
screen ..." or "C-a c" use this as their default directory. Without a
chdir command, this would be the directory from which screen was invoked.
Hardcopy and log files are always written to the window's default
directory, not the current directory of the process running in the window.
You can use this command multiple times in your .screenrc to start
various windows in different default directories, but the last chdir value
will affect all the windows you create interactively.
答案3
你说的没有多大意义。即使cd
是一个真正的命令, screen 也只会更改目录,然后立即退出,这对任何人都没有任何好处。
如果您只想在特定目录中启动特定屏幕会话:
(cd home/cataldo/Programs && screen)
这将更改目录,使用 shell 启动 screen,并在 screen 退出时返回到现有目录。
答案4
您可以添加stuff "cd /home/cataldo/Programs^M"
到您的~/.screenrc
或在提示时使用C-a :