Intereting Posts
Как включить user_xattr в Mint Cinnamon? encfs automount и authorized_keys Разберите файл txt на основе определенного разделителя и затем преобразуйте его в файл CSV Правило перезаписи Lighttpd Мне нужна помощь при отслеживании Как я могу хранить mtime файлов и каталогов, когда я использую rsync или cp? Для использования в резервном / инкрементальном резервном копировании Драйверы WiFi не работают почему эта команда sed не может получить желаемый результат Означает ли (источник) устройство в типе типа tmpfs что-нибудь? получение содержимого из файла .dmg или .img Как долго поддерживаются стабильные версии Debian? как Debian Wheezy По умолчанию tmux config Неверное отображение персонажа в приложениях, связанных с Интернетом Как рассчитать среднее количество столбцов по строкам, а также максимальное количество столбцов в файле в unix? Как принудительно использовать общие сочетания клавиш / макросов для всей системы?

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

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

screen 'cd /home/cataldo/Programs' 

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

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

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

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

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

 screen --version Screen version 4.00.03jw4 (FAU) 2-May-06 cat /etc/debian_version 6.0.3 

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

 chdir /home/cataldo/Programs 

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

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 "Ca : screen ..." or "Ca 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. 

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

Если вы хотите только начать сеанс определенного экрана в определенном каталоге:

 (cd home/cataldo/Programs && screen) 

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

Вы можете добавить stuff "cd /home/cataldo/Programs^M" к вашему ~/.screenrc или в stuff "cd /home/cataldo/Programs^M" строке с помощью Ca :