Why doesn't GNU `su` respect end of options?Any options to replace GNU coreutils on Linux?GNU/Hurd vs....
Are runways booked by airlines to land their planes?
Gravitational Force Between Numbers
Testing using real data of the customer
Visual Block Mode edit with sequential number
Does water in vacuum form a solid shell or freeze solid?
Papers on ArXiv as main references
Why did OJ Simpson's trial take 9 months?
Why did Drogon spare this character?
Question about Shemot, locusts
What is the function of は in the context?
Where is Jon going?
Unary Enumeration
Is superuser the same as root?
Can a UK national work as a paid shop assistant in the USA?
Is a world with one country feeding everyone possible?
How to deceive the MC
Why is 'additive' EQ more difficult to use than 'subtractive'?
Are there any German nonsense poems (Jabberwocky)?
How to remove new line added by readarray when using a delimiter?
To exponential digit growth and beyond!
Piping the output of comand columns
How does Dreadhorde Arcanist interact with split cards?
Are there guidelines for finding good names for LaTeX 2e packages and control sequences defined in these packages?
Why this character is punished instead of being honoured?
Why doesn't GNU `su` respect end of options?
Any options to replace GNU coreutils on Linux?GNU/Hurd vs. GNU/LinuxHow to source correct startup scripts on interactive, non-login shellWhen and how was the double-dash (--) introduced as an end of options delimiter in Unix/Linux?Why didn't GNU Info succeed man?Why does GNU say it is “Not Unix”?su silently fails with bash in /etc/passwdWhy is ddrescue slow when it could be faster on error free areas?Want to preserve bashrc and vimrc when switching to non-root usersGNU datamash transpose example doesn't seem to work correctly
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ margin-bottom:0;
}
When I run
user@hostname:~$ su -- root -z
I get
bash: -z: invalid option
Usage: bash [GNU long option] [option] ...
...
The above is the behavior I expect.
When I run
user@hostname:~$ su -l -- root -z
I get
-su: -z: invalid option
Usage: -su [GNU long option] [option] ...
...
I use the invalid option -z
only to demonstrate which command is parsing the option.
This behavior irks me to no end. su
continued searching for options after I declared end of options. Am I missing something, is this a bug or just horrible design?
su gnu
add a comment |
When I run
user@hostname:~$ su -- root -z
I get
bash: -z: invalid option
Usage: bash [GNU long option] [option] ...
...
The above is the behavior I expect.
When I run
user@hostname:~$ su -l -- root -z
I get
-su: -z: invalid option
Usage: -su [GNU long option] [option] ...
...
I use the invalid option -z
only to demonstrate which command is parsing the option.
This behavior irks me to no end. su
continued searching for options after I declared end of options. Am I missing something, is this a bug or just horrible design?
su gnu
1
I am confused.... Which OS has a-z
switch forsudo
orsu
? It looks like you might be trying to do eithersu - root
orsudo -i
. It's neversudo su
. The commands are mutually exclusive.
– Christopher
57 mins ago
-z
is not an option forsu
orbash
. It is intentional. I used a fake option to demonstrate which command was parsing the fake option I gave it.
– Harold Fischer
56 mins ago
Wassudo su
supposed to demonstrate something in particular? Ref @Christopher's question
– Seamus
43 mins ago
@Seamus No I was usingsudo
for debugging so I wouldn't have to enter a password forroot
every time I tested it. I tested withoutsudo
and the behavior is the same. I can see how it completely diluted the question and made it confusing
– Harold Fischer
42 mins ago
add a comment |
When I run
user@hostname:~$ su -- root -z
I get
bash: -z: invalid option
Usage: bash [GNU long option] [option] ...
...
The above is the behavior I expect.
When I run
user@hostname:~$ su -l -- root -z
I get
-su: -z: invalid option
Usage: -su [GNU long option] [option] ...
...
I use the invalid option -z
only to demonstrate which command is parsing the option.
This behavior irks me to no end. su
continued searching for options after I declared end of options. Am I missing something, is this a bug or just horrible design?
su gnu
When I run
user@hostname:~$ su -- root -z
I get
bash: -z: invalid option
Usage: bash [GNU long option] [option] ...
...
The above is the behavior I expect.
When I run
user@hostname:~$ su -l -- root -z
I get
-su: -z: invalid option
Usage: -su [GNU long option] [option] ...
...
I use the invalid option -z
only to demonstrate which command is parsing the option.
This behavior irks me to no end. su
continued searching for options after I declared end of options. Am I missing something, is this a bug or just horrible design?
su gnu
su gnu
edited 52 mins ago
Harold Fischer
asked 1 hour ago
Harold FischerHarold Fischer
688415
688415
1
I am confused.... Which OS has a-z
switch forsudo
orsu
? It looks like you might be trying to do eithersu - root
orsudo -i
. It's neversudo su
. The commands are mutually exclusive.
– Christopher
57 mins ago
-z
is not an option forsu
orbash
. It is intentional. I used a fake option to demonstrate which command was parsing the fake option I gave it.
– Harold Fischer
56 mins ago
Wassudo su
supposed to demonstrate something in particular? Ref @Christopher's question
– Seamus
43 mins ago
@Seamus No I was usingsudo
for debugging so I wouldn't have to enter a password forroot
every time I tested it. I tested withoutsudo
and the behavior is the same. I can see how it completely diluted the question and made it confusing
– Harold Fischer
42 mins ago
add a comment |
1
I am confused.... Which OS has a-z
switch forsudo
orsu
? It looks like you might be trying to do eithersu - root
orsudo -i
. It's neversudo su
. The commands are mutually exclusive.
– Christopher
57 mins ago
-z
is not an option forsu
orbash
. It is intentional. I used a fake option to demonstrate which command was parsing the fake option I gave it.
– Harold Fischer
56 mins ago
Wassudo su
supposed to demonstrate something in particular? Ref @Christopher's question
– Seamus
43 mins ago
@Seamus No I was usingsudo
for debugging so I wouldn't have to enter a password forroot
every time I tested it. I tested withoutsudo
and the behavior is the same. I can see how it completely diluted the question and made it confusing
– Harold Fischer
42 mins ago
1
1
I am confused.... Which OS has a
-z
switch for sudo
or su
? It looks like you might be trying to do either su - root
or sudo -i
. It's never sudo su
. The commands are mutually exclusive.– Christopher
57 mins ago
I am confused.... Which OS has a
-z
switch for sudo
or su
? It looks like you might be trying to do either su - root
or sudo -i
. It's never sudo su
. The commands are mutually exclusive.– Christopher
57 mins ago
-z
is not an option for su
or bash
. It is intentional. I used a fake option to demonstrate which command was parsing the fake option I gave it.– Harold Fischer
56 mins ago
-z
is not an option for su
or bash
. It is intentional. I used a fake option to demonstrate which command was parsing the fake option I gave it.– Harold Fischer
56 mins ago
Was
sudo su
supposed to demonstrate something in particular? Ref @Christopher's question– Seamus
43 mins ago
Was
sudo su
supposed to demonstrate something in particular? Ref @Christopher's question– Seamus
43 mins ago
@Seamus No I was using
sudo
for debugging so I wouldn't have to enter a password for root
every time I tested it. I tested without sudo
and the behavior is the same. I can see how it completely diluted the question and made it confusing– Harold Fischer
42 mins ago
@Seamus No I was using
sudo
for debugging so I wouldn't have to enter a password for root
every time I tested it. I tested without sudo
and the behavior is the same. I can see how it completely diluted the question and made it confusing– Harold Fischer
42 mins ago
add a comment |
1 Answer
1
active
oldest
votes
-su: -z: invalid option
Usage: -su [GNU long option] [option] ...
...
This is the error output from Bash, not from su. If you'd continued to quote, the very next line mentions a script file, for example, and later on the --rcfile
option, which clearly doesn't belong to su
. You could also compare to the output of su -z
, which will be a different error.
If you run
su -l -- root --version
you'll see that the argument is passed along and it's Bash that reports its version.
Bash is reporting itself as -su
(note the -
) because that's what is in its zeroth argument when su
invokes it as a login shell, not because it is su
itself (or even -su
).
Note that the su
manual does actually state that:
You can use the
--
argument to separate su options from the arguments
supplied to the shell.
which is what is happening here: the argument is passed along to the shell. If you'd left the --
out, you'd get the su
error output
su: invalid option -- 'z'
Usage: su [options] [LOGIN]
...
instead.
Thanks for taking the time to point out my silly mistake. When I runsu -- root -
,bash
complains it cannot set the the terminal process group. Shouldn'tbash
just treat the-
as end of options and start up the shell like the-
isn't there?
– Harold Fischer
14 mins ago
If you provide shell argumentssu
doesn't give it a controlling TTY (trysu -- root -x
). I don't quite understand that choice, but it is consistent withsu -c 'bash'
so I suppose that's part of it.
– Michael Homer
5 mins ago
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "106"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
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
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f520060%2fwhy-doesnt-gnu-su-respect-end-of-options%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
-su: -z: invalid option
Usage: -su [GNU long option] [option] ...
...
This is the error output from Bash, not from su. If you'd continued to quote, the very next line mentions a script file, for example, and later on the --rcfile
option, which clearly doesn't belong to su
. You could also compare to the output of su -z
, which will be a different error.
If you run
su -l -- root --version
you'll see that the argument is passed along and it's Bash that reports its version.
Bash is reporting itself as -su
(note the -
) because that's what is in its zeroth argument when su
invokes it as a login shell, not because it is su
itself (or even -su
).
Note that the su
manual does actually state that:
You can use the
--
argument to separate su options from the arguments
supplied to the shell.
which is what is happening here: the argument is passed along to the shell. If you'd left the --
out, you'd get the su
error output
su: invalid option -- 'z'
Usage: su [options] [LOGIN]
...
instead.
Thanks for taking the time to point out my silly mistake. When I runsu -- root -
,bash
complains it cannot set the the terminal process group. Shouldn'tbash
just treat the-
as end of options and start up the shell like the-
isn't there?
– Harold Fischer
14 mins ago
If you provide shell argumentssu
doesn't give it a controlling TTY (trysu -- root -x
). I don't quite understand that choice, but it is consistent withsu -c 'bash'
so I suppose that's part of it.
– Michael Homer
5 mins ago
add a comment |
-su: -z: invalid option
Usage: -su [GNU long option] [option] ...
...
This is the error output from Bash, not from su. If you'd continued to quote, the very next line mentions a script file, for example, and later on the --rcfile
option, which clearly doesn't belong to su
. You could also compare to the output of su -z
, which will be a different error.
If you run
su -l -- root --version
you'll see that the argument is passed along and it's Bash that reports its version.
Bash is reporting itself as -su
(note the -
) because that's what is in its zeroth argument when su
invokes it as a login shell, not because it is su
itself (or even -su
).
Note that the su
manual does actually state that:
You can use the
--
argument to separate su options from the arguments
supplied to the shell.
which is what is happening here: the argument is passed along to the shell. If you'd left the --
out, you'd get the su
error output
su: invalid option -- 'z'
Usage: su [options] [LOGIN]
...
instead.
Thanks for taking the time to point out my silly mistake. When I runsu -- root -
,bash
complains it cannot set the the terminal process group. Shouldn'tbash
just treat the-
as end of options and start up the shell like the-
isn't there?
– Harold Fischer
14 mins ago
If you provide shell argumentssu
doesn't give it a controlling TTY (trysu -- root -x
). I don't quite understand that choice, but it is consistent withsu -c 'bash'
so I suppose that's part of it.
– Michael Homer
5 mins ago
add a comment |
-su: -z: invalid option
Usage: -su [GNU long option] [option] ...
...
This is the error output from Bash, not from su. If you'd continued to quote, the very next line mentions a script file, for example, and later on the --rcfile
option, which clearly doesn't belong to su
. You could also compare to the output of su -z
, which will be a different error.
If you run
su -l -- root --version
you'll see that the argument is passed along and it's Bash that reports its version.
Bash is reporting itself as -su
(note the -
) because that's what is in its zeroth argument when su
invokes it as a login shell, not because it is su
itself (or even -su
).
Note that the su
manual does actually state that:
You can use the
--
argument to separate su options from the arguments
supplied to the shell.
which is what is happening here: the argument is passed along to the shell. If you'd left the --
out, you'd get the su
error output
su: invalid option -- 'z'
Usage: su [options] [LOGIN]
...
instead.
-su: -z: invalid option
Usage: -su [GNU long option] [option] ...
...
This is the error output from Bash, not from su. If you'd continued to quote, the very next line mentions a script file, for example, and later on the --rcfile
option, which clearly doesn't belong to su
. You could also compare to the output of su -z
, which will be a different error.
If you run
su -l -- root --version
you'll see that the argument is passed along and it's Bash that reports its version.
Bash is reporting itself as -su
(note the -
) because that's what is in its zeroth argument when su
invokes it as a login shell, not because it is su
itself (or even -su
).
Note that the su
manual does actually state that:
You can use the
--
argument to separate su options from the arguments
supplied to the shell.
which is what is happening here: the argument is passed along to the shell. If you'd left the --
out, you'd get the su
error output
su: invalid option -- 'z'
Usage: su [options] [LOGIN]
...
instead.
answered 41 mins ago
Michael HomerMichael Homer
52.5k9144181
52.5k9144181
Thanks for taking the time to point out my silly mistake. When I runsu -- root -
,bash
complains it cannot set the the terminal process group. Shouldn'tbash
just treat the-
as end of options and start up the shell like the-
isn't there?
– Harold Fischer
14 mins ago
If you provide shell argumentssu
doesn't give it a controlling TTY (trysu -- root -x
). I don't quite understand that choice, but it is consistent withsu -c 'bash'
so I suppose that's part of it.
– Michael Homer
5 mins ago
add a comment |
Thanks for taking the time to point out my silly mistake. When I runsu -- root -
,bash
complains it cannot set the the terminal process group. Shouldn'tbash
just treat the-
as end of options and start up the shell like the-
isn't there?
– Harold Fischer
14 mins ago
If you provide shell argumentssu
doesn't give it a controlling TTY (trysu -- root -x
). I don't quite understand that choice, but it is consistent withsu -c 'bash'
so I suppose that's part of it.
– Michael Homer
5 mins ago
Thanks for taking the time to point out my silly mistake. When I run
su -- root -
, bash
complains it cannot set the the terminal process group. Shouldn't bash
just treat the -
as end of options and start up the shell like the -
isn't there?– Harold Fischer
14 mins ago
Thanks for taking the time to point out my silly mistake. When I run
su -- root -
, bash
complains it cannot set the the terminal process group. Shouldn't bash
just treat the -
as end of options and start up the shell like the -
isn't there?– Harold Fischer
14 mins ago
If you provide shell arguments
su
doesn't give it a controlling TTY (try su -- root -x
). I don't quite understand that choice, but it is consistent with su -c 'bash'
so I suppose that's part of it.– Michael Homer
5 mins ago
If you provide shell arguments
su
doesn't give it a controlling TTY (try su -- root -x
). I don't quite understand that choice, but it is consistent with su -c 'bash'
so I suppose that's part of it.– Michael Homer
5 mins ago
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
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
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f520060%2fwhy-doesnt-gnu-su-respect-end-of-options%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
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
Required, but never shown
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
Required, but never shown
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
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
I am confused.... Which OS has a
-z
switch forsudo
orsu
? It looks like you might be trying to do eithersu - root
orsudo -i
. It's neversudo su
. The commands are mutually exclusive.– Christopher
57 mins ago
-z
is not an option forsu
orbash
. It is intentional. I used a fake option to demonstrate which command was parsing the fake option I gave it.– Harold Fischer
56 mins ago
Was
sudo su
supposed to demonstrate something in particular? Ref @Christopher's question– Seamus
43 mins ago
@Seamus No I was using
sudo
for debugging so I wouldn't have to enter a password forroot
every time I tested it. I tested withoutsudo
and the behavior is the same. I can see how it completely diluted the question and made it confusing– Harold Fischer
42 mins ago