在样本shell脚本定义我的别名是行不通的。 我是新来的Linux Shell脚本。 下面是示例shell文件
#!/bin/sh
echo "Setting Sample aliases ..."
alias xyz="cd /home/usr/src/xyz"
echo "Setting done ..."
在执行这个脚本,可以看我的回应消息。 但是,如果我执行的alias命令,我看到下面的错误
xyz: command not found
我这么想吗?
在样本shell脚本定义我的别名是行不通的。 我是新来的Linux Shell脚本。 下面是示例shell文件
#!/bin/sh
echo "Setting Sample aliases ..."
alias xyz="cd /home/usr/src/xyz"
echo "Setting done ..."
在执行这个脚本,可以看我的回应消息。 但是,如果我执行的alias命令,我看到下面的错误
xyz: command not found
我这么想吗?
源脚本,不喜欢执行它./foo.sh
或sh foo.sh
如果执行这样的脚本,它在子shell,而不是你当前正在运行。
source foo.sh
会为你工作。
您需要设置一个特定的选项,这样做, expand_aliases
:
shopt -s expand_aliases
例如:
# With option
$ cat a
#!/bin/bash
shopt -s expand_aliases
alias a="echo b"
type a
a
$ ./a
a is aliased to 'echo b'
b
# Without option
$ cat a
#!/bin/bash
alias a="echo b"
type a
a
$ ./a
./a: line 3: type: a: not found
./a: line 4: a: command not found
CF: https://unix.stackexchange.com/a/1498/27031和https://askubuntu.com/a/98786/127746
采购脚本 source script.sh
./script.sh
将在一个子shell执行,所做的更改只有到子shell适用。 一旦终止命令,子shell那张等方面做了改变。
HACK:只需shell中运行以下命令,然后执行该脚本。
alias xyz="cd /home/usr/src/xyz"
./script.sh
为了unalias使用下面的shell提示符
unalias xyz
如果您在脚本执行它,别名将由脚本执行完毕的时候已经过去。
如果你希望它是永久的:
你的别名是明确的,但你必须将其存储在~/.bashrc
,而不是在一个shell脚本。
将它添加到该文件,然后用其来源. .bashrc
. .bashrc
-它会加载该文件,以便别名将有可能使用。
如果你希望它只是在当前会话中使用:
只是把它写在你的控制台提示符。
$ aa
The program 'aa' is currently not installed. ...
$
$ alias aa="echo hello"
$
$ aa
hello
$
另外:从肯特的答案 ,我们可以看到,你也可以source
通过其source your_file
。 在这种情况下,你不需要使用shell script
,只是一个正常的文件会做到。
您的别名必须是在你的.profile文件不是在你的脚本,如果你在提示调用它。
如果你把一个别名在你的脚本,那么你必须在脚本中调用它。
源文件是试图运行内部有一个别名脚本时正确的答案。
source yourscript.sh