Skip to content

Commit 9fe7128

Browse files
committed
Update command prefixes to default to sh for linux.
1 parent ac0d3ba commit 9fe7128

File tree

1 file changed

+13
-10
lines changed

1 file changed

+13
-10
lines changed

azext/batch/_template_utils.py

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -202,22 +202,23 @@ def _strip_prefix(cmd_line):
202202
"""Strip an OS operating prefix from a command line.
203203
"""
204204
if cmd_line.startswith('cmd.exe /c '):
205-
return cmd_line[11:].strip('"')
205+
return 'cmd.exe /c ', cmd_line[11:].strip('"')
206+
# Always use full cmd name for windows
206207
if cmd_line.startswith('cmd /c '):
207-
return cmd_line[7:].strip('"')
208+
return 'cmd.exe /c ', cmd_line[7:].strip('"')
208209
if cmd_line.startswith('/bin/bash -c '):
209-
return cmd_line[13:]
210+
return '/bin/bash -c ', cmd_line[13:]
210211
if cmd_line.startswith('/bin/sh -c '):
211-
return cmd_line[11:]
212-
return cmd_line
212+
return '/bin/sh -c ', cmd_line[11:]
213+
return "", cmd_line
213214

214215
def _add_cmd_prefix(task, os_flavor):
215216
"""Add OS-specific command prefix to command line."""
216217
if os_flavor == pool_utils.PoolOperatingSystemFlavor.WINDOWS:
217218
# TODO: Do we need windows shell escaping?
218219
task.command_line = 'cmd /c "{}"'.format(task.command_line) #.replace('\"','\\\\\"')
219220
elif os_flavor == pool_utils.PoolOperatingSystemFlavor.LINUX:
220-
task.command_line = '/bin/bash -c \'set -e; set -o pipefail; {}; wait\''.format(task.command_line)
221+
task.command_line = '/bin/sh -c \'set -e; set -o pipefail; {}; wait\''.format(task.command_line)
221222
else:
222223
raise ValueError("Unknown pool OS flavor: " + str(os_flavor))
223224

@@ -1041,22 +1042,24 @@ def construct_setup_task(existing_task, command_info, os_flavor):
10411042
if os_flavor == pool_utils.PoolOperatingSystemFlavor.WINDOWS:
10421043
result['command_line'] = 'cmd.exe /c "{}"'.format(result['command_line'])
10431044
elif os_flavor == pool_utils.PoolOperatingSystemFlavor.LINUX:
1044-
result['command_line'] = '/bin/bash -c {}'.format(result['command_line'])
1045+
result['command_line'] = '/bin/sh -c {}'.format(result['command_line'])
10451046
else:
10461047
raise ValueError("Unknown pool OS flavor: " + str(os_flavor))
10471048
return result if result else None
1049+
prefix = ""
10481050
if result.get('command_line'):
1049-
commands.append(_strip_prefix(result['command_line']))
1051+
prefix, cmd = _strip_prefix(result['command_line'])
1052+
commands.append(cmd)
10501053
resources.extend(result.get('resource_files', []))
10511054
if os_flavor == pool_utils.PoolOperatingSystemFlavor.WINDOWS:
10521055
full_win_cmd = ' & '.join(commands)
1053-
result['command_line'] = 'cmd.exe /c "{}"'.format(full_win_cmd)
1056+
result['command_line'] = '{} "{}"'.format(prefix, full_win_cmd)
10541057
result['user_identity'] = models.UserIdentity(
10551058
auto_user=models.AutoUserSpecification(scope="task", elevation_level="admin"))
10561059
elif os_flavor == pool_utils.PoolOperatingSystemFlavor.LINUX:
10571060
# Escape the users command line
10581061
full_linux_cmd = shell_escape(';'.join(commands))
1059-
result['command_line'] = '/bin/bash -c {}'.format(full_linux_cmd)
1062+
result['command_line'] = '{} {}'.format(prefix, full_linux_cmd)
10601063
result['user_identity'] = models.UserIdentity(
10611064
auto_user=models.AutoUserSpecification(scope="pool", elevation_level="admin"))
10621065
else:

0 commit comments

Comments
 (0)