diff --git a/lib/server/console.js b/lib/server/console.js index 2e1ecae3..ee951194 100644 --- a/lib/server/console.js +++ b/lib/server/console.js @@ -279,15 +279,18 @@ var isChangeVolume = win.isChangeVolume(command), isVolume = win.isVolume(command), paramDir = Util.rmStr(command, 'cd '), - isRootOrHome = equalPart(paramDir, ['/', '~']), - getDir = WIN ? 'chdir' : 'pwd'; + isRootOrHome = equalPart(paramDir, ['/', '~']); if (!isRootOrHome && !isChangeVolume || isVolume) { - paramDir = path.join(currDir, paramDir); - command = 'cd ' + paramDir; + command = dropFirstWord(paramDir); + paramDir = getFirstWord(paramDir); + + paramDir = path.join(currDir, paramDir); + + command = 'cd ' + paramDir + command; } - exec(command + ' && ' + getDir, {cwd : paramDir}, function (error, stdout, stderr) { + exec(command, {cwd : paramDir}, function (error, stdout, stderr) { var errorStr = ''; if (stderr) @@ -297,11 +300,48 @@ callback(error || stderr, { stderr : addNewLine(errorStr), - path : rmNewLine(stdout) + stdout : stdout, + path : paramDir }); }); } + function getFirstWord(str) { + var number, word, + is = Util.isString(str); + + Util.checkArgs(arguments, ['str']); + + if (is) { + number = str.indexOf(' '); + + if (~number) + word = str.substr(0, number); + else + word = str; + } + + return word; + } + + function dropFirstWord(str) { + var number, + is = Util.isString(str); + + Util.checkArgs(arguments, ['str']); + + if (is) { + number = str.indexOf(' '); + + if (~number) + str = str.substr(number + 1); + else + str = ''; + } + + return str; + } + function log(connNum, str, typeParam) { var ret, type = ' ';