2016-04-18 5 views
0

У меня есть два сценария, используемые для установки перфорация на встроенной системе Linux, и они прекрасно работают в последней строкеИспользование псевдонима в сценарии

#!/bin/bash 


sudo route add -net 192.168.2.0 gw 192.168.42.1 netmask 255.255.255.0 

scp -P 23 ~/perf_p7/perfSetup.sh 192.168.42.1:../tmp 

ssh -p 23 192.168.42.1 bash ../tmp/perfSetup.sh 

и

#!/bin/bash 


mkdir /mnt/buildroot-target 

IP=192.168.42.2 

nfs.sh ${IP} 

mount -o nolock,proto=tcp,addr=${IP} -t nfs ${IP}:/home/vclement/sfx1_build/Binaries/p7-arm/master/buildroot/target /mnt/buildroot-target/ 

alias perf='LD_LIBRARY_PATH=/mnt/buildroot-target/usr/lib /mnt/buildroot-target/usr/bin/perf' 

alias perf='LD_LIBRARY_PATH=/mnt/buildroot-target/usr/lib /mnt/buildroot-target/usr/bin/perf' не кажется, кроме однако, когда я запускаю его вручную в консоли, он отлично работает, чтобы я мог напрямую использовать команду «perf».

Если кто-нибудь имеет какие-либо идеи, почему это или есть исправление, спасибо давая мне знать

+1

Какими шагами вы следуете? Если вы запустите скрипт, псевдоним будет установлен в подоболочке, поэтому, когда он закончится, вы не сможете получить доступ к 'perf', потому что вы находитесь в другой оболочке. – fedorqui

ответ

0

Проблема заключается в том, что alias является встроенной командой для Баш. Его эффект теряется, когда скрипт заканчивается.

Если вы хотите, чтобы применить к текущей оболочке, а вы должны «источник» второй сценарий, либо:

source ./<scriptname> 

или:

. ./<scriptname> 
+0

Я изменил первый файл двумя предложениями, но он, похоже, не сильно изменился. Должен ли я использовать что-то еще, кроме псевдонима для ярлыка «perf», которое должно быть доступно на устройстве? – VictorC

0

Вы можете использовать функции. Они более подходят для чего-то более сложного, чем просто простые команды:

function perf() { 
    LD_LIBRARY_PATH=/mnt/buildroot-target/usr/lib /mnt/buildroot-target/usr/bin/perf 
}