使用别名在shell脚本?(using alias in shell script?)

2019-08-22 05:59发布

在样本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

我这么想吗?

Answer 1:

脚本,不喜欢执行它./foo.shsh foo.sh

如果执行这样的脚本,它在子shell,而不是你当前正在运行。

source foo.sh  

会为你工作。



Answer 2:

您需要设置一个特定的选项,这样做, 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



Answer 3:

采购脚本 source script.sh

./script.sh将在一个子shell执行,所做的更改只有到子shell适用。 一旦终止命令,子shell那张等方面做了改变。


要么

HACK:只需shell中运行以下命令,然后执行该脚本。

alias xyz="cd /home/usr/src/xyz"
./script.sh

为了unalias使用下面的shell提示符

unalias xyz 


Answer 4:

如果您在脚本执行它,别名将由脚本执行完毕的时候已经过去。

如果你希望它是永久的:

你的别名是明确的,但你必须将其存储在~/.bashrc ,而不是在一个shell脚本。

将它添加到该文件,然后用其来源. .bashrc . .bashrc -它会加载该文件,以便别名将有可能使用。

如果你希望它只是在当前会话中使用:

只是把它写在你的控制台提示符。

$ aa
The program 'aa' is currently not installed. ...
$ 
$ alias aa="echo hello"
$ 
$ aa
hello
$ 

另外:从肯特的答案 ,我们可以看到,你也可以source通过其source your_file 。 在这种情况下,你不需要使用shell script ,只是一个正常的文件会做到。



Answer 5:

您的别名必须是在你的.profile文件不是在你的脚本,如果你在提示调用它。

如果你把一个别名在你的脚本,那么你必须在脚本中调用它。

源文件是试图运行内部有一个别名脚本时正确的答案。

source yourscript.sh


文章来源: using alias in shell script?
标签: shell