Strange behavior in $(dirname `readlink -f $0`)
When I run the following as a normal user, everything is fine:
$(dirname `readlink -f $0`)
but after I switched to root, the following error occurred:
readlink: invalid option -- 'b'
Try `readlink --help' for more information.
dirname: missing operand
Try `dirname --help' for more information.
Any ideas? I tried on local Fedora 16 and Amazon EC2, both running bash shell.
edit for illustration.
apologze that I did not further illustrate the issue here. here is the scenario:
using normal user account:
$ pwd
/home/myuser
$ export MY_DIR=$(dirname `readlink -f $0`)
$ echo MY_DIR
/home/myuser
using root:
# pwd
/root
# export ROOT_DIR=$(dirname `readlink -f $0`)
readlink: invalid option -- 'b'
Try `readlink --help' for more information.
dirname: missing operand
Try `dirname --help' for more information.
# export ROOT_DIR=echo $(dirname `readlink -f -- $0`)
# echo $ROOT_DIR
/root
bash
add a comment |
When I run the following as a normal user, everything is fine:
$(dirname `readlink -f $0`)
but after I switched to root, the following error occurred:
readlink: invalid option -- 'b'
Try `readlink --help' for more information.
dirname: missing operand
Try `dirname --help' for more information.
Any ideas? I tried on local Fedora 16 and Amazon EC2, both running bash shell.
edit for illustration.
apologze that I did not further illustrate the issue here. here is the scenario:
using normal user account:
$ pwd
/home/myuser
$ export MY_DIR=$(dirname `readlink -f $0`)
$ echo MY_DIR
/home/myuser
using root:
# pwd
/root
# export ROOT_DIR=$(dirname `readlink -f $0`)
readlink: invalid option -- 'b'
Try `readlink --help' for more information.
dirname: missing operand
Try `dirname --help' for more information.
# export ROOT_DIR=echo $(dirname `readlink -f -- $0`)
# echo $ROOT_DIR
/root
bash
add a comment |
When I run the following as a normal user, everything is fine:
$(dirname `readlink -f $0`)
but after I switched to root, the following error occurred:
readlink: invalid option -- 'b'
Try `readlink --help' for more information.
dirname: missing operand
Try `dirname --help' for more information.
Any ideas? I tried on local Fedora 16 and Amazon EC2, both running bash shell.
edit for illustration.
apologze that I did not further illustrate the issue here. here is the scenario:
using normal user account:
$ pwd
/home/myuser
$ export MY_DIR=$(dirname `readlink -f $0`)
$ echo MY_DIR
/home/myuser
using root:
# pwd
/root
# export ROOT_DIR=$(dirname `readlink -f $0`)
readlink: invalid option -- 'b'
Try `readlink --help' for more information.
dirname: missing operand
Try `dirname --help' for more information.
# export ROOT_DIR=echo $(dirname `readlink -f -- $0`)
# echo $ROOT_DIR
/root
bash
When I run the following as a normal user, everything is fine:
$(dirname `readlink -f $0`)
but after I switched to root, the following error occurred:
readlink: invalid option -- 'b'
Try `readlink --help' for more information.
dirname: missing operand
Try `dirname --help' for more information.
Any ideas? I tried on local Fedora 16 and Amazon EC2, both running bash shell.
edit for illustration.
apologze that I did not further illustrate the issue here. here is the scenario:
using normal user account:
$ pwd
/home/myuser
$ export MY_DIR=$(dirname `readlink -f $0`)
$ echo MY_DIR
/home/myuser
using root:
# pwd
/root
# export ROOT_DIR=$(dirname `readlink -f $0`)
readlink: invalid option -- 'b'
Try `readlink --help' for more information.
dirname: missing operand
Try `dirname --help' for more information.
# export ROOT_DIR=echo $(dirname `readlink -f -- $0`)
# echo $ROOT_DIR
/root
bash
bash
edited Feb 1 '12 at 13:38
asked Jan 31 '12 at 3:41
d4v1dv00
245238
245238
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
This should be the same error as in a user login shell, because in a login shell the 0
shell parameter, expanding to the name of the current process, gives -bash
, the minus indicating the login shell. You now see where the -b
error comes from.
Try instead
echo "$( dirname "$(readlink -f -- "$0")" )"
add a comment |
If you really want the directory name of the shell script which is being run:
script_dir="$(dirname -- "$(readlink -f -- "$0")")"
Yes, it's a bit cludgy, but it's safe.
If you want the current shell, you can try @MichaelMrozek's suggestion of using $SHELL
.
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%2f30446%2fstrange-behavior-in-dirname-readlink-f-0%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
This should be the same error as in a user login shell, because in a login shell the 0
shell parameter, expanding to the name of the current process, gives -bash
, the minus indicating the login shell. You now see where the -b
error comes from.
Try instead
echo "$( dirname "$(readlink -f -- "$0")" )"
add a comment |
This should be the same error as in a user login shell, because in a login shell the 0
shell parameter, expanding to the name of the current process, gives -bash
, the minus indicating the login shell. You now see where the -b
error comes from.
Try instead
echo "$( dirname "$(readlink -f -- "$0")" )"
add a comment |
This should be the same error as in a user login shell, because in a login shell the 0
shell parameter, expanding to the name of the current process, gives -bash
, the minus indicating the login shell. You now see where the -b
error comes from.
Try instead
echo "$( dirname "$(readlink -f -- "$0")" )"
This should be the same error as in a user login shell, because in a login shell the 0
shell parameter, expanding to the name of the current process, gives -bash
, the minus indicating the login shell. You now see where the -b
error comes from.
Try instead
echo "$( dirname "$(readlink -f -- "$0")" )"
edited Nov 13 at 7:18
Kusalananda
121k16229372
121k16229372
answered Jan 31 '12 at 5:35
enzotib
33.5k710393
33.5k710393
add a comment |
add a comment |
If you really want the directory name of the shell script which is being run:
script_dir="$(dirname -- "$(readlink -f -- "$0")")"
Yes, it's a bit cludgy, but it's safe.
If you want the current shell, you can try @MichaelMrozek's suggestion of using $SHELL
.
add a comment |
If you really want the directory name of the shell script which is being run:
script_dir="$(dirname -- "$(readlink -f -- "$0")")"
Yes, it's a bit cludgy, but it's safe.
If you want the current shell, you can try @MichaelMrozek's suggestion of using $SHELL
.
add a comment |
If you really want the directory name of the shell script which is being run:
script_dir="$(dirname -- "$(readlink -f -- "$0")")"
Yes, it's a bit cludgy, but it's safe.
If you want the current shell, you can try @MichaelMrozek's suggestion of using $SHELL
.
If you really want the directory name of the shell script which is being run:
script_dir="$(dirname -- "$(readlink -f -- "$0")")"
Yes, it's a bit cludgy, but it's safe.
If you want the current shell, you can try @MichaelMrozek's suggestion of using $SHELL
.
answered Jan 31 '12 at 10:27
l0b0
27.6k17113242
27.6k17113242
add a comment |
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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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%2f30446%2fstrange-behavior-in-dirname-readlink-f-0%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