First argument passed to wrapper script is ignored
Clash Royale CLAN TAG#URR8PPP
up vote
2
down vote
favorite
So I've got the following script:
#!/bin/bash
echo '-------------------------'
echo $0
echo $1
echo $@
echo '-------------------------'
exec su -- someuser -c "/tmp/elasticsearch-6.4.2/bin/elasticsearch "$@""
Located at /usr/bin/elasticsearch-wrapper
Now when I run it with the following args:
elasticsearch-wrapper
-E cluster.name=elasticsearch-test-24efcbba4c68
-E node.name=node-1
-E http.port=9250
-E path.data=/tmp/elasticsearch_test
-E path.logs=/tmp/log/elasticsearch
-E cluster.routing.allocation.disk.threshold_enabled=false
-E network.host=127.0.0.1
-E node.attr.testattr=test
-E path.repo=/tmp
-E repositories.url.allowed_urls=http://snapshot.test*
-E discovery.zen.minimum_master_nodes=0
-E node.max_local_storage_nodes=1
-E logger.level=DEBUG
I end up with the following error:
root@24efcbba4c68:/app# elasticsearch-wrapper
> -E cluster.name=elasticsearch-test-24efcbba4c68
> -E node.name=node-1
> -E http.port=9250
> -E path.data=/tmp/elasticsearch_test
> -E path.logs=/tmp/log/elasticsearch
> -E cluster.routing.allocation.disk.threshold_enabled=false
> -E network.host=127.0.0.1
> -E node.attr.testattr=test
> -E path.repo=/tmp
> -E repositories.url.allowed_urls=http://snapshot.test*
> -E discovery.zen.minimum_master_nodes=0
> -E node.max_local_storage_nodes=1
> -E logger.level=DEBUG
-------------------------
/usr/bin/elasticsearch-wrapper
cluster.name=elasticsearch-test-24efcbba4c68 -E node.name=node-1 -E http.port=9250 -E path.data=/tmp/elasticsearch_test -E path.logs=/tmp/log/elasticsearch -E cluster.routing.allocation.disk.threshold_enabled=false -E network.host=127.0.0.1 -E node.attr.testattr=test -E path.repo=/tmp -E repositories.url.allowed_urls=http://snapshot.test* -E discovery.zen.minimum_master_nodes=0 -E node.max_local_storage_nodes=1 -E logger.level=DEBUG
-------------------------
cluster.name=elasticsearch-test-24efcbba4c68: -c: line 0: unexpected EOF while looking for matching `"'
cluster.name=elasticsearch-test-24efcbba4c68: -c: line 1: syntax error: unexpected end of file
So looking at the output of $@
shows that the first -E
option is for some reason excluded which results in the error.
The output was:
cluster.name=elasticsearch-test-24efcbba4c68 -E node.name=node-1.....
but it should be:
-E cluster.name=elasticsearch-test-24efcbba4c68 -E node.name=node-1....
(Notice the missing -E
from the start)
But I'm not sure why that is the case if anyone could point out the reason?
bash shell-script arguments
New contributor
add a comment |Â
up vote
2
down vote
favorite
So I've got the following script:
#!/bin/bash
echo '-------------------------'
echo $0
echo $1
echo $@
echo '-------------------------'
exec su -- someuser -c "/tmp/elasticsearch-6.4.2/bin/elasticsearch "$@""
Located at /usr/bin/elasticsearch-wrapper
Now when I run it with the following args:
elasticsearch-wrapper
-E cluster.name=elasticsearch-test-24efcbba4c68
-E node.name=node-1
-E http.port=9250
-E path.data=/tmp/elasticsearch_test
-E path.logs=/tmp/log/elasticsearch
-E cluster.routing.allocation.disk.threshold_enabled=false
-E network.host=127.0.0.1
-E node.attr.testattr=test
-E path.repo=/tmp
-E repositories.url.allowed_urls=http://snapshot.test*
-E discovery.zen.minimum_master_nodes=0
-E node.max_local_storage_nodes=1
-E logger.level=DEBUG
I end up with the following error:
root@24efcbba4c68:/app# elasticsearch-wrapper
> -E cluster.name=elasticsearch-test-24efcbba4c68
> -E node.name=node-1
> -E http.port=9250
> -E path.data=/tmp/elasticsearch_test
> -E path.logs=/tmp/log/elasticsearch
> -E cluster.routing.allocation.disk.threshold_enabled=false
> -E network.host=127.0.0.1
> -E node.attr.testattr=test
> -E path.repo=/tmp
> -E repositories.url.allowed_urls=http://snapshot.test*
> -E discovery.zen.minimum_master_nodes=0
> -E node.max_local_storage_nodes=1
> -E logger.level=DEBUG
-------------------------
/usr/bin/elasticsearch-wrapper
cluster.name=elasticsearch-test-24efcbba4c68 -E node.name=node-1 -E http.port=9250 -E path.data=/tmp/elasticsearch_test -E path.logs=/tmp/log/elasticsearch -E cluster.routing.allocation.disk.threshold_enabled=false -E network.host=127.0.0.1 -E node.attr.testattr=test -E path.repo=/tmp -E repositories.url.allowed_urls=http://snapshot.test* -E discovery.zen.minimum_master_nodes=0 -E node.max_local_storage_nodes=1 -E logger.level=DEBUG
-------------------------
cluster.name=elasticsearch-test-24efcbba4c68: -c: line 0: unexpected EOF while looking for matching `"'
cluster.name=elasticsearch-test-24efcbba4c68: -c: line 1: syntax error: unexpected end of file
So looking at the output of $@
shows that the first -E
option is for some reason excluded which results in the error.
The output was:
cluster.name=elasticsearch-test-24efcbba4c68 -E node.name=node-1.....
but it should be:
-E cluster.name=elasticsearch-test-24efcbba4c68 -E node.name=node-1....
(Notice the missing -E
from the start)
But I'm not sure why that is the case if anyone could point out the reason?
bash shell-script arguments
New contributor
See also: unix.stackexchange.com/q/65803/117549
â Jeff Schaller
4 hours ago
add a comment |Â
up vote
2
down vote
favorite
up vote
2
down vote
favorite
So I've got the following script:
#!/bin/bash
echo '-------------------------'
echo $0
echo $1
echo $@
echo '-------------------------'
exec su -- someuser -c "/tmp/elasticsearch-6.4.2/bin/elasticsearch "$@""
Located at /usr/bin/elasticsearch-wrapper
Now when I run it with the following args:
elasticsearch-wrapper
-E cluster.name=elasticsearch-test-24efcbba4c68
-E node.name=node-1
-E http.port=9250
-E path.data=/tmp/elasticsearch_test
-E path.logs=/tmp/log/elasticsearch
-E cluster.routing.allocation.disk.threshold_enabled=false
-E network.host=127.0.0.1
-E node.attr.testattr=test
-E path.repo=/tmp
-E repositories.url.allowed_urls=http://snapshot.test*
-E discovery.zen.minimum_master_nodes=0
-E node.max_local_storage_nodes=1
-E logger.level=DEBUG
I end up with the following error:
root@24efcbba4c68:/app# elasticsearch-wrapper
> -E cluster.name=elasticsearch-test-24efcbba4c68
> -E node.name=node-1
> -E http.port=9250
> -E path.data=/tmp/elasticsearch_test
> -E path.logs=/tmp/log/elasticsearch
> -E cluster.routing.allocation.disk.threshold_enabled=false
> -E network.host=127.0.0.1
> -E node.attr.testattr=test
> -E path.repo=/tmp
> -E repositories.url.allowed_urls=http://snapshot.test*
> -E discovery.zen.minimum_master_nodes=0
> -E node.max_local_storage_nodes=1
> -E logger.level=DEBUG
-------------------------
/usr/bin/elasticsearch-wrapper
cluster.name=elasticsearch-test-24efcbba4c68 -E node.name=node-1 -E http.port=9250 -E path.data=/tmp/elasticsearch_test -E path.logs=/tmp/log/elasticsearch -E cluster.routing.allocation.disk.threshold_enabled=false -E network.host=127.0.0.1 -E node.attr.testattr=test -E path.repo=/tmp -E repositories.url.allowed_urls=http://snapshot.test* -E discovery.zen.minimum_master_nodes=0 -E node.max_local_storage_nodes=1 -E logger.level=DEBUG
-------------------------
cluster.name=elasticsearch-test-24efcbba4c68: -c: line 0: unexpected EOF while looking for matching `"'
cluster.name=elasticsearch-test-24efcbba4c68: -c: line 1: syntax error: unexpected end of file
So looking at the output of $@
shows that the first -E
option is for some reason excluded which results in the error.
The output was:
cluster.name=elasticsearch-test-24efcbba4c68 -E node.name=node-1.....
but it should be:
-E cluster.name=elasticsearch-test-24efcbba4c68 -E node.name=node-1....
(Notice the missing -E
from the start)
But I'm not sure why that is the case if anyone could point out the reason?
bash shell-script arguments
New contributor
So I've got the following script:
#!/bin/bash
echo '-------------------------'
echo $0
echo $1
echo $@
echo '-------------------------'
exec su -- someuser -c "/tmp/elasticsearch-6.4.2/bin/elasticsearch "$@""
Located at /usr/bin/elasticsearch-wrapper
Now when I run it with the following args:
elasticsearch-wrapper
-E cluster.name=elasticsearch-test-24efcbba4c68
-E node.name=node-1
-E http.port=9250
-E path.data=/tmp/elasticsearch_test
-E path.logs=/tmp/log/elasticsearch
-E cluster.routing.allocation.disk.threshold_enabled=false
-E network.host=127.0.0.1
-E node.attr.testattr=test
-E path.repo=/tmp
-E repositories.url.allowed_urls=http://snapshot.test*
-E discovery.zen.minimum_master_nodes=0
-E node.max_local_storage_nodes=1
-E logger.level=DEBUG
I end up with the following error:
root@24efcbba4c68:/app# elasticsearch-wrapper
> -E cluster.name=elasticsearch-test-24efcbba4c68
> -E node.name=node-1
> -E http.port=9250
> -E path.data=/tmp/elasticsearch_test
> -E path.logs=/tmp/log/elasticsearch
> -E cluster.routing.allocation.disk.threshold_enabled=false
> -E network.host=127.0.0.1
> -E node.attr.testattr=test
> -E path.repo=/tmp
> -E repositories.url.allowed_urls=http://snapshot.test*
> -E discovery.zen.minimum_master_nodes=0
> -E node.max_local_storage_nodes=1
> -E logger.level=DEBUG
-------------------------
/usr/bin/elasticsearch-wrapper
cluster.name=elasticsearch-test-24efcbba4c68 -E node.name=node-1 -E http.port=9250 -E path.data=/tmp/elasticsearch_test -E path.logs=/tmp/log/elasticsearch -E cluster.routing.allocation.disk.threshold_enabled=false -E network.host=127.0.0.1 -E node.attr.testattr=test -E path.repo=/tmp -E repositories.url.allowed_urls=http://snapshot.test* -E discovery.zen.minimum_master_nodes=0 -E node.max_local_storage_nodes=1 -E logger.level=DEBUG
-------------------------
cluster.name=elasticsearch-test-24efcbba4c68: -c: line 0: unexpected EOF while looking for matching `"'
cluster.name=elasticsearch-test-24efcbba4c68: -c: line 1: syntax error: unexpected end of file
So looking at the output of $@
shows that the first -E
option is for some reason excluded which results in the error.
The output was:
cluster.name=elasticsearch-test-24efcbba4c68 -E node.name=node-1.....
but it should be:
-E cluster.name=elasticsearch-test-24efcbba4c68 -E node.name=node-1....
(Notice the missing -E
from the start)
But I'm not sure why that is the case if anyone could point out the reason?
bash shell-script arguments
bash shell-script arguments
New contributor
New contributor
edited 6 hours ago
New contributor
asked 6 hours ago
kurupt_89
11115
11115
New contributor
New contributor
See also: unix.stackexchange.com/q/65803/117549
â Jeff Schaller
4 hours ago
add a comment |Â
See also: unix.stackexchange.com/q/65803/117549
â Jeff Schaller
4 hours ago
See also: unix.stackexchange.com/q/65803/117549
â Jeff Schaller
4 hours ago
See also: unix.stackexchange.com/q/65803/117549
â Jeff Schaller
4 hours ago
add a comment |Â
2 Answers
2
active
oldest
votes
up vote
2
down vote
The reason why echo $1
prints an empty line in your case where $1
expands to -E
is that echo
is taking -E
as a flag and interpreting it as a modifier rather as something to print.
Use printf
instead, which is able to reliably print arguments with arbitrary contents:
printf "%sn" "$1"
printf "%sn" "$*"
The last line where you're executing elasticsearch
under su -c
, you can't really use $@
, since it expands to multiple arguments inside double quotes and su -c
expects a single argument to pass to a shell. So you should use $*
here, without any quotes.
exec su someuser -c "/tmp/elasticsearch-6.4.2/bin/elasticsearch $*"
That's imperfect, since it will do another round of shell substitution on your arguments, so if there's any meta-characters in the arguments you might run into trouble...
If your distribution ships with a command such as runas
or runuser
, which takes the command as multiple arguments, that's a better choice than su
, not only for that reason but also in how the PAM stack is used (su
is really meant for interactive use rather than spawning services.) Or if you're spawning this service using something like systemd, then switching users in the service file would be best.
2
That--
just echos--
on my bash. I would useprintf "%s" "$1"
â ctrl-alt-delor
2 hours ago
2
not only inbash
. The standard is quite clear thatecho
should always treat--
as an ordinary argument.
â mosvy
50 mins ago
@ctrl-alt-delor Updated to recommend use ofprintf
instead.
â Filipe Brandenburger
12 mins ago
add a comment |Â
up vote
2
down vote
replace your last line with:
exec su -c '/tmp/elasticsearch-6.4.2/bin/elasticsearch "$@"' someuser -- dummy-argv0 "$@"
su
's synopsis in the man page (su [options] [username]
) is deceptive, here is some verbiage from below it:
Additional arguments may be provided after the username, in which case they are supplied to the user's login shell.
....
You can use the -- argument to separate su options from the arguments
supplied to the shell.
You should also replace all the echo
s with printf '%sn' ...
, since the echo
builtin from bash
and zsh
, and /bin/echo
from linux will use themselves the -E
argument (quite contrary to what the standard requires). Generally, there's no way to safely use echo
with variables which may expand to -n
, -e
or -E
.
add a comment |Â
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
2
down vote
The reason why echo $1
prints an empty line in your case where $1
expands to -E
is that echo
is taking -E
as a flag and interpreting it as a modifier rather as something to print.
Use printf
instead, which is able to reliably print arguments with arbitrary contents:
printf "%sn" "$1"
printf "%sn" "$*"
The last line where you're executing elasticsearch
under su -c
, you can't really use $@
, since it expands to multiple arguments inside double quotes and su -c
expects a single argument to pass to a shell. So you should use $*
here, without any quotes.
exec su someuser -c "/tmp/elasticsearch-6.4.2/bin/elasticsearch $*"
That's imperfect, since it will do another round of shell substitution on your arguments, so if there's any meta-characters in the arguments you might run into trouble...
If your distribution ships with a command such as runas
or runuser
, which takes the command as multiple arguments, that's a better choice than su
, not only for that reason but also in how the PAM stack is used (su
is really meant for interactive use rather than spawning services.) Or if you're spawning this service using something like systemd, then switching users in the service file would be best.
2
That--
just echos--
on my bash. I would useprintf "%s" "$1"
â ctrl-alt-delor
2 hours ago
2
not only inbash
. The standard is quite clear thatecho
should always treat--
as an ordinary argument.
â mosvy
50 mins ago
@ctrl-alt-delor Updated to recommend use ofprintf
instead.
â Filipe Brandenburger
12 mins ago
add a comment |Â
up vote
2
down vote
The reason why echo $1
prints an empty line in your case where $1
expands to -E
is that echo
is taking -E
as a flag and interpreting it as a modifier rather as something to print.
Use printf
instead, which is able to reliably print arguments with arbitrary contents:
printf "%sn" "$1"
printf "%sn" "$*"
The last line where you're executing elasticsearch
under su -c
, you can't really use $@
, since it expands to multiple arguments inside double quotes and su -c
expects a single argument to pass to a shell. So you should use $*
here, without any quotes.
exec su someuser -c "/tmp/elasticsearch-6.4.2/bin/elasticsearch $*"
That's imperfect, since it will do another round of shell substitution on your arguments, so if there's any meta-characters in the arguments you might run into trouble...
If your distribution ships with a command such as runas
or runuser
, which takes the command as multiple arguments, that's a better choice than su
, not only for that reason but also in how the PAM stack is used (su
is really meant for interactive use rather than spawning services.) Or if you're spawning this service using something like systemd, then switching users in the service file would be best.
2
That--
just echos--
on my bash. I would useprintf "%s" "$1"
â ctrl-alt-delor
2 hours ago
2
not only inbash
. The standard is quite clear thatecho
should always treat--
as an ordinary argument.
â mosvy
50 mins ago
@ctrl-alt-delor Updated to recommend use ofprintf
instead.
â Filipe Brandenburger
12 mins ago
add a comment |Â
up vote
2
down vote
up vote
2
down vote
The reason why echo $1
prints an empty line in your case where $1
expands to -E
is that echo
is taking -E
as a flag and interpreting it as a modifier rather as something to print.
Use printf
instead, which is able to reliably print arguments with arbitrary contents:
printf "%sn" "$1"
printf "%sn" "$*"
The last line where you're executing elasticsearch
under su -c
, you can't really use $@
, since it expands to multiple arguments inside double quotes and su -c
expects a single argument to pass to a shell. So you should use $*
here, without any quotes.
exec su someuser -c "/tmp/elasticsearch-6.4.2/bin/elasticsearch $*"
That's imperfect, since it will do another round of shell substitution on your arguments, so if there's any meta-characters in the arguments you might run into trouble...
If your distribution ships with a command such as runas
or runuser
, which takes the command as multiple arguments, that's a better choice than su
, not only for that reason but also in how the PAM stack is used (su
is really meant for interactive use rather than spawning services.) Or if you're spawning this service using something like systemd, then switching users in the service file would be best.
The reason why echo $1
prints an empty line in your case where $1
expands to -E
is that echo
is taking -E
as a flag and interpreting it as a modifier rather as something to print.
Use printf
instead, which is able to reliably print arguments with arbitrary contents:
printf "%sn" "$1"
printf "%sn" "$*"
The last line where you're executing elasticsearch
under su -c
, you can't really use $@
, since it expands to multiple arguments inside double quotes and su -c
expects a single argument to pass to a shell. So you should use $*
here, without any quotes.
exec su someuser -c "/tmp/elasticsearch-6.4.2/bin/elasticsearch $*"
That's imperfect, since it will do another round of shell substitution on your arguments, so if there's any meta-characters in the arguments you might run into trouble...
If your distribution ships with a command such as runas
or runuser
, which takes the command as multiple arguments, that's a better choice than su
, not only for that reason but also in how the PAM stack is used (su
is really meant for interactive use rather than spawning services.) Or if you're spawning this service using something like systemd, then switching users in the service file would be best.
edited 13 mins ago
answered 4 hours ago
Filipe Brandenburger
4,8001623
4,8001623
2
That--
just echos--
on my bash. I would useprintf "%s" "$1"
â ctrl-alt-delor
2 hours ago
2
not only inbash
. The standard is quite clear thatecho
should always treat--
as an ordinary argument.
â mosvy
50 mins ago
@ctrl-alt-delor Updated to recommend use ofprintf
instead.
â Filipe Brandenburger
12 mins ago
add a comment |Â
2
That--
just echos--
on my bash. I would useprintf "%s" "$1"
â ctrl-alt-delor
2 hours ago
2
not only inbash
. The standard is quite clear thatecho
should always treat--
as an ordinary argument.
â mosvy
50 mins ago
@ctrl-alt-delor Updated to recommend use ofprintf
instead.
â Filipe Brandenburger
12 mins ago
2
2
That
--
just echos --
on my bash. I would use printf "%s" "$1"
â ctrl-alt-delor
2 hours ago
That
--
just echos --
on my bash. I would use printf "%s" "$1"
â ctrl-alt-delor
2 hours ago
2
2
not only in
bash
. The standard is quite clear that echo
should always treat --
as an ordinary argument.â mosvy
50 mins ago
not only in
bash
. The standard is quite clear that echo
should always treat --
as an ordinary argument.â mosvy
50 mins ago
@ctrl-alt-delor Updated to recommend use of
printf
instead.â Filipe Brandenburger
12 mins ago
@ctrl-alt-delor Updated to recommend use of
printf
instead.â Filipe Brandenburger
12 mins ago
add a comment |Â
up vote
2
down vote
replace your last line with:
exec su -c '/tmp/elasticsearch-6.4.2/bin/elasticsearch "$@"' someuser -- dummy-argv0 "$@"
su
's synopsis in the man page (su [options] [username]
) is deceptive, here is some verbiage from below it:
Additional arguments may be provided after the username, in which case they are supplied to the user's login shell.
....
You can use the -- argument to separate su options from the arguments
supplied to the shell.
You should also replace all the echo
s with printf '%sn' ...
, since the echo
builtin from bash
and zsh
, and /bin/echo
from linux will use themselves the -E
argument (quite contrary to what the standard requires). Generally, there's no way to safely use echo
with variables which may expand to -n
, -e
or -E
.
add a comment |Â
up vote
2
down vote
replace your last line with:
exec su -c '/tmp/elasticsearch-6.4.2/bin/elasticsearch "$@"' someuser -- dummy-argv0 "$@"
su
's synopsis in the man page (su [options] [username]
) is deceptive, here is some verbiage from below it:
Additional arguments may be provided after the username, in which case they are supplied to the user's login shell.
....
You can use the -- argument to separate su options from the arguments
supplied to the shell.
You should also replace all the echo
s with printf '%sn' ...
, since the echo
builtin from bash
and zsh
, and /bin/echo
from linux will use themselves the -E
argument (quite contrary to what the standard requires). Generally, there's no way to safely use echo
with variables which may expand to -n
, -e
or -E
.
add a comment |Â
up vote
2
down vote
up vote
2
down vote
replace your last line with:
exec su -c '/tmp/elasticsearch-6.4.2/bin/elasticsearch "$@"' someuser -- dummy-argv0 "$@"
su
's synopsis in the man page (su [options] [username]
) is deceptive, here is some verbiage from below it:
Additional arguments may be provided after the username, in which case they are supplied to the user's login shell.
....
You can use the -- argument to separate su options from the arguments
supplied to the shell.
You should also replace all the echo
s with printf '%sn' ...
, since the echo
builtin from bash
and zsh
, and /bin/echo
from linux will use themselves the -E
argument (quite contrary to what the standard requires). Generally, there's no way to safely use echo
with variables which may expand to -n
, -e
or -E
.
replace your last line with:
exec su -c '/tmp/elasticsearch-6.4.2/bin/elasticsearch "$@"' someuser -- dummy-argv0 "$@"
su
's synopsis in the man page (su [options] [username]
) is deceptive, here is some verbiage from below it:
Additional arguments may be provided after the username, in which case they are supplied to the user's login shell.
....
You can use the -- argument to separate su options from the arguments
supplied to the shell.
You should also replace all the echo
s with printf '%sn' ...
, since the echo
builtin from bash
and zsh
, and /bin/echo
from linux will use themselves the -E
argument (quite contrary to what the standard requires). Generally, there's no way to safely use echo
with variables which may expand to -n
, -e
or -E
.
edited 11 mins ago
answered 39 mins ago
mosvy
3,480119
3,480119
add a comment |Â
add a comment |Â
kurupt_89 is a new contributor. Be nice, and check out our Code of Conduct.
kurupt_89 is a new contributor. Be nice, and check out our Code of Conduct.
kurupt_89 is a new contributor. Be nice, and check out our Code of Conduct.
kurupt_89 is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f479587%2ffirst-argument-passed-to-wrapper-script-is-ignored%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
See also: unix.stackexchange.com/q/65803/117549
â Jeff Schaller
4 hours ago