Подтвердить что ты не робот

Используя псевдоним в оболочке script?

Мой псевдоним, определенный в образце shell script, не работает. И я новичок в Linux Shell Scripting. Ниже приведен пример файла оболочки

#!/bin/sh

echo "Setting Sample aliases ..."
alias xyz="cd /home/usr/src/xyz"
echo "Setting done ..."

При выполнении этого script, я вижу эхо-сообщения. Но если я выполняю команду alias, я вижу ошибку ниже

xyz: command not found

Мне что-то не хватает?

4b9b3361

Ответ 1

источник вашего script, не выполняйте его как ./foo.sh или sh foo.sh

Если вы выполняете свой script, то он работает в суб-оболочке, а не в вашем текущем.

source foo.sh  

будет работать для вас.

Ответ 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

Ответ 3

поиск script source script.sh

./script.sh будет выполняться в под-оболочке, и внесенные изменения применяются только к под-оболочке. Как только команда завершается, суб-оболочка переходит, а также выполняет изменения.


ИЛИ

HACK: просто запустите следующую команду на оболочке, а затем выполните script.

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

В unalias используйте следующую команду в командной строке

unalias xyz 

Ответ 4

Если вы выполните его в script, псевдоним будет завершен к завершению выполнения script.

Если вы хотите, чтобы он был постоянным:

Ваш псевдоним хорошо определен, но его нужно сохранить в ~/.bashrc, а не в оболочке script.

Добавьте его в этот файл, а затем отправьте его с помощью . .bashrc - он загрузит файл, чтобы можно было использовать псевдоним.

Если вы хотите, чтобы он использовался только в текущем сеансе:

Просто напишите в командной строке.

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

Также: из ответа Кента мы можем видеть, что вы также можете source его на source your_file. В этом случае вам не нужно использовать shell script, только обычный файл сделает это.

Ответ 5

Ваш псевдоним должен быть в вашем файле .profile не в вашем script, если вы вызываете его в приглашении.

Если вы поместите псевдоним в свой script, тогда вы должны вызвать его в своем script.

Источник файла является правильным ответом при попытке запустить script, внутри которого есть псевдоним.

source yourscript.sh

Ответ 6

Поместите свой псевдоним в файл с именем ~/.bash_aliases, а затем, во многих дистрибутивах, он будет загружен автоматически, не нужно вручную запускать исходную команду для его загрузки.

Ответ 7

Вы можете использовать приведенную ниже команду.

shopt -s expand_aliases

source ~/.bashrc

eval $command