How can you check if a command can be executable or not in Linux.
Example:
xeyes
From man bash in the conditional expressions paragraph:
-x file
True if file exists and is executable.
So, you can use:
[ -x /usr/bin/xeyes ] && echo "File is executable" || echo "File is not an executable or does not exist"
-x $(which bogus) instead of -x /usr/bin/bogus. For it, which bogus >/dev/null && echo "available" || echo "unavailable" works just fine for me.
-x $(which bogus) does not work for me either, but adding quotes around the expression as such: -x "$(which bogus)" does.
needrestart: if [[ -x "$(command -v needrestart)" ]] ; then echo "yes"; else echo "nope"; fi or: if [[ -x "$(which needrestart)" ]] ; then echo "yes"; else echo "nope"; fi It just happens that this command is not available to regular users, only to root, so...
If you know the location of where the command binary is kept, just do an ls -l. If you don't know the location first find out location using which command
$ which xeyes
/usr/bin/xeyes
If the command has execute permission ( x ) set, then it is executable.
$ ls -l /usr/bin/
-rw-rw-r-- 1 arushirai arushirai 0 May 23 11:58 123
-rwxrwxr-x 1 arushirai arushirai 0 May 23 11:58 xeyes
The -x <filename> actually checks if the file has execute permission set
Explanation:
THe first column of ls -l shows the permission on file.
-rwxrwxr-x
-rwxrwxr-x
type of file ( - is for regular file )owner permission ( rwx : read, write and execute )group permission ( rwx : read , write and execute )other permission (r-x : read and execute permission ) For more information on file permissions read: https://wiki.archlinux.org/index.php/File_permissions_and_attributes
readlink -f $(which your-command-here)
If you don't known a path to the command you can use which to check where it is (of course, if you have it in $PATH). If you know a path to command file use if -x /path/to/command statement.