Как я запускаю программу с другим рабочим каталогом от тока от оболочки Linux?

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

// LOGIN
m1.findElement(By.xpath("//input[@id='userEmailID']")).sendKeys("jbg@autods.com.au");
m1.findElement(By.xpath("//input[@name='userPassword']")).sendKeys("adinjbg");

m1.findElement(By.xpath("//input[@type='submit']")).click();
325
задан Mark Amery 2 May 2015 в 13:29
поделиться

7 ответов

Вызвать программу следующим образом:

(cd /c; /a/helloworld)

Скобки вызывают субоболочка, которая будет порождена. Эта под-оболочка затем изменяет свой рабочий каталог на / c , затем выполняет helloworld из / a . После выхода из программы суб-оболочка завершает работу, возвращая вас к приглашению родительской оболочки в каталоге, из которого вы начали.

Обработка ошибок: Чтобы избежать запуска программы без изменения каталога, например, когда с ошибкой / с ,

(cd /c && exec /a/helloworld)

[Спасибо Джошу и Джулиано за советы по улучшению этого ответа!]

524
ответ дан 23 November 2019 в 00:51
поделиться

Аналогично ответу Дэвида Шмитта , а также предложению Джоша, но он не оставляет запущенный процесс оболочки:

(cd /c && exec /a/helloworld)

Этот способ больше похож на обычный запускать команды на оболочке. Чтобы увидеть практическое отличие, вы должны запустить ps ef из другой оболочки с каждым решением.

91
ответ дан 23 November 2019 в 00:51
поделиться
sh -c 'cd /c && ../a/helloworld'
18
ответ дан 23 November 2019 в 00:51
поделиться

Я всегда думаю, что инструменты UNIX должны быть написаны как фильтры, читать ввод из stdin и записывать вывод в stdout. Если возможно, вы можете изменить двоичный файл helloworld, чтобы записать содержимое текстового файла в стандартный вывод, а не в конкретный файл. Таким образом, вы можете использовать оболочку для записи вашего файла в любом месте.

$ cd ~ / b

$ ~ / a / helloworld> ~ / c / helloworld.txt

11
ответ дан 23 November 2019 в 00:51
поделиться

Один из способов сделать это - создать скрипт оболочки-оболочки.

Скрипт оболочки изменил бы текущий каталог на / c, а затем запустил / a / helloworld. После выхода из сценария оболочки текущий каталог возвращается к /b.

Here пример сценария оболочки bash:

#!/bin/bash
cd /c
/a/helloworld
3
ответ дан 23 November 2019 в 00:51
поделиться

Если вы всегда хотите, чтобы он шел в / C, используйте абсолютный путь при записи файла.

1
ответ дан 23 November 2019 в 00:51
поделиться

Если вы хотите выполнить это внутри вашей программы, я бы сделал что-то вроде:

#include <unistd.h>
int main()
{
  if(chdir("/c") < 0 )  
  {
     printf("Failed\n");
     return -1 ;
  }

  // rest of your program...

}
0
ответ дан 23 November 2019 в 00:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: