Невозможно выполнить команду при запуске экрана GNU

Невозможно выполнить команду при запуске экрана GNU

Я хочу сделать что-то похожее на то, что написано здесьбез использования zsh (я использую bash), но если я попытаюсь запустить screen с помощью

screen 'cd /home/cataldo/Programs'

Я получаю следующую ошибку:

Cannot exec 'cd home/cataldo/Programs': No such file or directory

Без кавычек после exec тоже не работает. Двойные кавычки ничего не меняют. Использование bash -c "cd .." не работает.

Может быть, проблема с правами доступа или при запуске screen выполняет команды от имени специального пользователя?

Большое спасибо за Вашу помощь!

screen --version
Screen version 4.00.03jw4 (FAU) 2-May-06

cat /etc/debian_version 
6.0.3

решение1

Это не работает, потому что cdэто встроенная команда оболочки (попробуйте which cd). На экране естькоманда chdirкоторые вы можете использовать для достижения своей цели: Поместите следующее в ваш .screenrc:

chdir /home/cataldo/Programs

Теперь откройте начальный экран и вы должны оказаться в указанном каталоге.

решение2

screenне знает о , cdтак как это встроенная команда оболочки, поэтому screenне может ее выполнить. Однако, screenимеет встроенную команду chdir. Если вы выполните chdirее из screenкомандной строки, все новые окна в screenсеансе будут запускаться в вашем $HOME. Если вы выполните ее chdir /home/cataldo/Programsиз screenкомандной строки, все новые окна в screenсеансе будут запускаться в /home/cataldo/Programs.

Если вы хотите открыть 3 окна в разных каталогах при запуске нового screenсеанса, определите ~/.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)

Это позволит сменить каталог, запустить screen с оболочкой и вернуться в существующий каталог после выхода из screen.

решение4

Вы можете добавить stuff "cd /home/cataldo/Programs^M"в свой ~/.screenrcили в командной строке, используяC-a :

Связанный контент