無法在 GNU 畫面啟動時執行指令

無法在 GNU 畫面啟動時執行指令

我想做一些類似所寫的事情 這裡不使用 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 :

相關內容